Comment se débarrasser de la minuterie

J'ai le code suivant qui utilise le Système.Les minuteries.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 j'ai le code suivant pour gérer l'événement:

private static void OnElapsedTime(Object source, ElapsedEventArgs e)
{
    //do something
}

La question est: si l'événement timer se déclenche et pénètre dans le OnElapsedTime, serait l'objet Timer s'arrête et doit être correctement nettoyée? Si non, que puis-je faire pour se débarrasser correctement de l'objet Timer/l'arrêter? Je ne veux pas la minuterie pour que soudain, de fluage et de causer des ravages dans mon application.

while (aTimer.Enabled)... N'est-elle pas à l'encontre du but de l'utilisation d'un timer?
Eh bien, je voulais juste en boucle pendant que la minuterie est toujours actif. La minuterie est vraiment juste une façon pour le système attendre un certain laps de temps. Les Threads ne sont pas favorisés dans mon contexte, j'ai donc opté pour l'utilisation de la minuterie à la place.
Vous êtes à l'aide d'un fil si vous l'aimez ou pas. Fil de discussion.Le sommeil apparaît comme la voie à suivre. Le code que vous avez là est en fait assez méchant de performance.
Mickelsen: je suis l'exécution du code ci-dessus à l'intérieur de Sharepoint code. Je ne sais pas trop comment SharePoint va gérer les threads, donc je suis allé pour la Minuterie à la place. Si les threads pour obtenir une meilleure performance et plus propre code, je vais l'amour de l'utiliser.
Mon point est que votre code est déjà en cours d'exécution dans un thread. En utilisant le Système.Minuterie, vous êtes susceptible de fait à l'origine d'un autre thread pour être utilisé. En utilisant le Système.Threading, vous n'êtes pas. Donc, si votre organisation a une certaine aversion pour le multi-threading, vous désobéir à l'esprit de la loi, afin de suivre la lettre de la loi.

OriginalL'auteur BeraCim | 2010-10-08