2010-05-06 2 views
1

Dans mon application, j'ai une minuterie qui vérifie les mises à jour de configuration du serveur à quelques minutes d'intervalle. La récupération de configuration est un processus qui prend du temps, donc je veux forcer l'événement "Tick" du timer, mais je ne peux pas simplement appeler timer_tick (bla, bla, bla) car il s'exécutera de manière synchrone.Cocher la minuterie de la minuterie (y compris le comportement asynchrone)

Existe-t-il un moyen simple de forcer la minuterie à "cocher" (sans créer un nouveau fil)? Le comportement devrait "réinitialiser" l'heure-gauche de la minuterie (ainsi, si initialement la minuterie était réglée sur 2 minutes d'intervalle et 1 minute après - après avoir forcé la "Coche" - la minuterie recommencera 2 minutes)

Répondre

2

changer la valeur du délai d'expiration.

+0

Merci mec ... J'ai créé une application simple pour vérifier les effets de la modification du délai d'attente alors que la minuterie fonctionne et cela fonctionne très bien. Ce que j'ai fait était de changer l'intervalle de la minuterie à 1 (minimum possible), Thread.Sleep (1), et en réinitialisant l'intervalle à sa valeur d'origine ... travaillé comme un charme – Nissim

0

Dans votre processus de consommation, votre première étape consiste simplement à désactiver la minuterie et la dernière étape consiste à l'activer à nouveau.

Peut-être que vous venez de mettre cette dis- et activer juste avant et après avoir appelé votre processus long comme celui-ci:

timer.Enabled = false; 
LongRunningSyncProcess(); 
timer.Enabled = true; 
+0

LongRunningSyncProcess() fonctionnera synchronouly - exatcly ce que j'ai didn ne veux pas – Nissim