2010-02-26 4 views
2

Je commence à utiliser la classe C# System.Threading.Timer. Lorsque la minuterie est déjà démarrée et que je suis au milieu de l'exécution de mon TimerCallback que j'ai spécifié, que se passe-t-il lorsque j'arrête la minuterie en utilisant myTimer.Change(Timeout.Infinite, 0).Arrêt d'un temporisateur C# et rappel exécuté

Mon rappel se termine-t-il ou est-il interrompu immédiatement?

S'il n'est pas annulé, il existe un moyen d'effectuer quelque chose de similaire à Thread.Abort pour la suppression immédiate du code à exécuter?

Répondre

2

Votre rappel n'est pas annulé, il termine l'exécution. Si vous voulez arrêter l'exécution, il suffit d'indiquer return à partir de la fonction.

+0

Merci beaucoup pour vous aider! –

1

Je suggère d'utiliser System.Timers.Timer, et vous devrez vérifier la propriété Enabled du temporisateur dans la fonction de rappel pour arrêter l'exécution.

Exemple:

using System.Timers; 

Créer un nouvel objet Timer:

Timer timerObject = new Timer(); 
timerObject.Interval = 1000; 
timerObject.Start(); 
timerObject.Elapsed += new ElapsedEventHandler(timerObject_Elapsed); 

Et en cas fonction handlign chèque activé:

void timerObject_Elapsed(object sender, ElapsedEventArgs e) 
{ 
    Timer timerObject = (Timer)sender; 
    if (!timerObject.Enabled) return; 
    while(true) 
    { 
     DoSomething..... 
     if (!timerObject.Enabled) return; 
    } 
} 
+0

Merci beaucoup! Ça m'a aidé! –