je le code suivant qui utilise le System.Timers.Timer:Comment disposer minuterie
// an instance variable Timer inside a method
Timer aTimer = new Timer();
aTimer.Elapsed += new ElapsedEventHandler(OnElapsedTime);
aTimer.Interval = 300000;
aTimer.AutoReset = false;
aTimer.Enabled = true;
while (aTimer.Enabled)
{
if (count == expectedCount)
{
aTimer.Enabled = false;
break;
}
}
Et je le code suivant pour gérer l'événement:
private static void OnElapsedTime(Object source, ElapsedEventArgs e)
{
// do something
}
La question est la suivante: Si l'événement timer est déclenché et entre dans OnElapsedTime, l'objet Timer s'arrête-t-il et est-il correctement collecté? Si ce n'est pas le cas, que puis-je faire pour éliminer correctement l'objet Minuterie/l'arrêter? Je ne veux pas que la minuterie se glisse soudainement et provoque des ravages dans mon application.
'while (aTimer.Enabled)' ... Cela ne va-t-il pas à l'encontre de l'utilisation d'une minuterie? – dtb
Eh bien, je voulais juste faire une boucle pendant que la minuterie est toujours active. La minuterie est vraiment juste un moyen pour le système d'attendre un certain temps. Les threads ne sont pas favorisés dans mon contexte, j'ai donc choisi d'utiliser la minuterie à la place. – BeraCim
Vous utilisez un fil si vous le souhaitez ou non. Thread.Sleep semble être le chemin à parcourir. Le code que vous avez là est en réalité assez méchant en termes de performances. –