Answer-ID
  • Întrebări
  • Tag-uri
  • Categorii
Notificări
Recompense
Înregistrare
După înregistrare, veți primi notificări despre răspunsurile și comentariile la întrebările DVS.
Logare
Dacă aveţi deja un cont, autentificaţi-vă pentru a verifica notificările noi.
Aici vor fi recompensele pentru întrebările, răspunsurile și comentariile adăugate sau modificate.
Mai mult
Sursă
Editează
 John
John

Cronometru fiabil într-o aplicație consola

Sunt conștient de faptul că în .NET există trei tipuri de cronometre (a se vedea Compararea claselor de cronometrare din Biblioteca de clasă .NET Framework ). Am ales un cronometru cu filet, pe măsură ce alte tipuri se pot deplasa dacă firul principal este ocupat și am nevoie ca acesta să fie fiabil.

Modul în care funcționează acest timer în controlul temporizatorului este pus pe alt fir, astfel încât acesta să poată bifa întotdeauna împreună cu începerea lucrului finalizat pe firul părinte atunci când nu este ocupat.

Problema cu acest cronometru într-o aplicație consola este că, în timp ce timerul bate pe un alt fir, firul principal nu face nimic, astfel încât aplicația se închide.

Am încercat să adaug o buclă în timp ce este adevărat , dar firul principal este prea ocupat atunci când temporizatorul nu mai funcționează.

92 2008-08-01T12:43:11+00:00 2
Programare
timer
vb.net
.net
c#
Comentarii la întrebare (0)
Greg Hurlman
1 ianuarie 1970 в 3:00
1970-01-01T03:00:00+00:00
Mai mult
Sursă
Editează
#44

Luați în considerare utilizarea unui ManualResetEvent pentru a blocați firul principal la sfârșitul prelucrării sale și apelați Reset () pe acesta după terminarea procesării cronometrului. Dacă aceasta este o problemă care trebuie executată în mod constant, luați în considerare transferarea acesteia într-un proces de serviciu în locul unei aplicații consola.

0
0
Comentarii (0)
huseyint
1 ianuarie 1970 в 3:00
1970-01-01T03:00:00+00:00
Mai mult
Sursă
Editează
#45

Puteți folosi ceva de genul Console.ReadLine () pentru a bloca firul principal, astfel încât alte fire de fundal (cum ar fi firele temporizatorului) vor funcționa în continuare. De asemenea, puteți utiliza AutoResetEvent pentru a bloca execuția, (atunci când este necesar) puteți apela metoda Set () pe acel obiect AutoResetEvent pentru a elibera firul principal. De asemenea, asigurați-vă că referința dvs. la obiectul Timer nu iese din domeniul de aplicare și se colectează gunoi.

0
0
Comentarii (0)
Adăugati o întrebare
Categorii
Toate
Tehnologii
Cultură
Viață / Artă
Stiință
Profesii
Afaceri
ID
KO
RU
© Answer-ID 2021
Sursă
stackoverflow.com
în cadrul licenței cc by-sa 3.0 cu atribuire