Megbízható időzítő egy konzolos alkalmazás

szavazat
78

Tisztában vagyok azzal, hogy a .NET- három időzítő típus (lásd Összehasonlítva a Timer osztályok a .NET Framework Class Library ). Azért választottam egy menetes időzítő, mint a többi fajta is a sodródás, ha a fő szál foglalt, és azt kell, hogy ez megbízható.

Az, hogy ez időzítő működik az irányítást az időzítő helyezni egy másik szál, hogy azt mindig jelölje együtt a munkát kezdik kitölteni a szülő szál, ha nem foglalt.

A probléma ezzel a timer egy konzolos alkalmazás, hogy míg az időzítő ketyeg mentén egy másik szál a fő téma nem csinál semmit, így az alkalmazás bezárul.

Próbáltam hozzá egy while truehurkot, de aztán a fő szál túl elfoglalt, amikor az időzítő nem megy le.

A kérdést 01/08/2008 13:43
a forrás felhasználó
Más nyelveken...                            


2 válasz

szavazat
50

Használhatja valami hasonló Console.ReadLine(), hogy blokkolja a fő téma, így más háttér szálak (például időzítő szál) is működik. Ön is használhat AutoResetEvent , hogy blokkolja a végrehajtást, akkor (ha kell), akkor hívja Set () metódus, hogy AutoResetEvent objektumot, hogy kiadja a fő téma. Is biztosítják, hogy a hivatkozás Timer objektum nem megy ki a hatálya alól, és szemetet gyűjtött.

Válaszolt 01/08/2008 13:56
a forrás felhasználó

szavazat
17

Fontolja meg ManualResetEvent hogy blokkolja a fő szál végén a feldolgozás, és hívja Reset()fel egyszer az időzítő feldolgozás befejeződött. Ha ez az, amit meg kell, hogy folyamatosan fut, úgy mozog ez egy szolgáltatási folyamat helyett konzol alkalmazást.

Válaszolt 01/08/2008 13:55
a forrás felhasználó

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