timer de încredere într-o aplicație consolă

voturi
78

Sunt conștient de faptul că în .NET există trei tipuri de timer ( a se vedea Comparând clase timer în Biblioteca .NET Framework Class ). Am ales un cronometru filetat ca celelalte tipuri pot deriva în cazul în care firul principal este ocupat, și am nevoie de acest lucru să fie de încredere.

Modul în care acest temporizator funcționează în controlul timer-ul este pus pe un alt fir astfel încât să poată bifa întotdeauna împreună cu începerea lucrărilor finalizate pe firul părinte atunci când nu este ocupat.

Problema cu acest temporizator într-o aplicație consolă este că, în timp ce temporizatorul bifarea de-a lungul pe un alt fir de firul principal nu face nimic, astfel încât aplicația se închide.

Am încercat adăugarea unei while truebucle, dar apoi firul principal este prea ocupat atunci când cronometrul se stinge.

Întrebat 01/08/2008 la 13:43
sursa de către utilizator
În alte limbi...                            


2 răspunsuri

voturi
50

Puteți folosi ceva de genul Console.ReadLine()pentru a bloca firul principal, astfel încât alte fire de fundal (cum ar fi fire de timer) va funcționa în continuare. Ați putea folosi , de asemenea , un AutoResetEvent pentru a bloca executarea, atunci (atunci când aveți nevoie pentru a) , puteți apela Set metoda () pe acel obiect AutoResetEvent pentru a elibera firul principal. De asemenea , se asigura ca referință la obiect Cronometrul nu iese din domeniul de aplicare și de gunoi colectate.

Publicat 01/08/2008 la 13:56
sursa de către utilizator

voturi
17

Luați în considerare utilizarea unui ManualResetEvent pentru a bloca firul principal , la sfârșitul prelucrării sale, și de apel Reset()pe ea după încheierea procesării timer - ul a terminat. În cazul în care acest lucru este ceva care are nevoie pentru a rula în mod constant, luați în considerare mutarea acestui proces într - un serviciu în loc de o aplicație consolă.

Publicat 01/08/2008 la 13:55
sursa de către utilizator

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more