Betrouwbare timer in een console applicatie

stemmen
78

Ik ben me ervan bewust dat er in .NET er drie timer types (zie Vergelijking van de Timer Klassen in het .NET Framework Class Library ). Ik heb een schroefdraad timer als de andere types kunnen drijven als de rode draad in gesprek is gekozen, en ik heb dit nodig om betrouwbaar te zijn.

De manier waarop deze timer werkt in de controle van de timer wordt op een andere thread, zodat het altijd kan aanvinken, samen met het werk beginnen voltooid op de bovenliggende draad wanneer het niet druk.

Het probleem met deze timer in een console applicatie is dat, terwijl de timer langs tikt op een andere thread de rode draad is niets te doen aan de toepassing wordt gesloten.

Ik probeerde het toevoegen van een while truelus, maar dan is de rode draad is te druk wanneer de timer doet afgaan.

De vraag is gesteld op 01/08/2008 om 13:43
bron van user
In andere talen...                            


2 antwoorden

stemmen
17

Overwegen een ManualResetEvent de draad aan het eind van de verwerking te blokkeren, en roept Reset()op wanneer de verwerking van de timer is afgelopen. Als dit is iets dat moet continu te werken, kunt u overwegen het verplaatsen van dit in een dienst proces in plaats van een console app.

antwoordde op 01/08/2008 om 13:55
bron van user

stemmen
50

U kunt gebruik maken van iets als Console.ReadLine()de rode draad te blokkeren, zodat andere achtergrond draden (zoals timer threads) zal nog steeds werken. U kunt ook een gebruiken AutoResetEvent de uitvoering te blokkeren, dan (als dat nodig is) kunt u Set () methode een beroep doen op die AutoResetEvent object om de rode draad los te maken. Ook voor zorgen dat uw verwijzing naar object Timer gaat niet uit van de omvang en opgeschoond.

antwoordde op 01/08/2008 om 13:56
bron van user

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