75 votes

Arrêter de manière fiable System.Threading.Timer ?

J'ai beaucoup cherché une solution à ce problème. Je cherche un moyen propre et simple d'empêcher la méthode de rappel d'un System.Threading.Timer d'être invoquée après que je l'ai arrêté.

Je n'arrive pas à en trouver, ce qui m'a conduit, à l'occasion, à recourir à la redoutable combinaison thread-thread.sleep-thread.abort.

Peut-on le faire en utilisant la serrure ?

1voto

Il y a un lien MSDN qui explique comment réaliser correctement la minuterie d'arrêt. Utilisez ControlThreadProc() méthode avec HandleElapsed(object sender, ElapsedEventArgs e) événement synchronisé par syncPoint variable de classe statique. Commentaire Thread.Sleep(testRunsFor); sur ControlThreadProc() si elle n'est pas adaptée (probablement). La clé est là : utiliser une variable statique et une opération atomique comme Interlocked.CompareExchange sur les déclarations conditionnelles.

Lien : Méthode Timer.Stop

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X