c# - way - xamarin timer class




Timer affidabile in un'applicazione console (2)

Sono consapevole che in .NET esistono tre tipi di timer (consultare Confronto delle classi di timer nella libreria di classi di .NET Framework ). Ho scelto un timer con thread in quanto gli altri tipi possono andare alla deriva se il thread principale è occupato e ho bisogno che questo sia affidabile.

Il modo in cui questo timer funziona nel controllo del timer viene inserito in un altro thread in modo che possa sempre spuntare insieme all'inizio del lavoro completato sul thread principale quando non è occupato.

Il problema con questo timer in un'applicazione console è che mentre il timer passa su un altro thread, il thread principale non sta facendo nulla per chiudere l'applicazione.

Ho provato ad aggiungere un ciclo while true , ma il thread principale è troppo occupato quando il timer si spegne.


Prendi in considerazione l'utilizzo di ManualResetEvent per bloccare il thread principale al termine dell'elaborazione e chiama Reset() su di esso al termine dell'elaborazione del timer. Se questo è qualcosa che deve essere eseguito costantemente, considerare di spostarlo in un processo di servizio anziché in un'app console.


Puoi usare qualcosa come Console.ReadLine() per bloccare il thread principale, quindi altri thread in background (come i thread del timer) continueranno a funzionare. È inoltre possibile utilizzare un AutoResetEvent per bloccare l'esecuzione, quindi (quando è necessario) è possibile chiamare il metodo Set () su quell'oggetto AutoResetEvent per rilasciare il thread principale. Assicurati anche che il tuo riferimento all'oggetto Timer non esca dall'ambito e dai rifiuti raccolti.





timer