Bonjour,
dans mon service Windows, j'ai un Timer qui est cadencé toutes les N minutes (lorsque ces N minutes sont passées, la méthode Timer_Elapsed(object source, ElapsedEventArgs e) est appelée).
Je communique avec ce service par WCF pour lui envoyer des commandes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 _Timer = new System.Timers.Timer(); _Timer.AutoReset = false; _Timer.Interval = N_MINUTES * 60 * 1000; _Timer.Elapsed += new System.Timers.ElapsedEventHandler(Timer_Elapsed);
L'une d'entre elle (Execute()) sert à forcer l'exécution de la méthode normalement appelée toutes les N minutes (Timer_Elapsed(object source, ElapsedEventArgs e)).
J'ai essayé d'appeler directement cette méthode mais apparemment ce n'est pas possible.
J'ai aussi essayé d'arrêter le Timer, lui mettre un intervalle d'1ms et de le relancer :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 public void Execute() { Timer_Elpased(null, null); }
mais j'ai l'impression que des threads se chevauchent et yen a plusieurs qui se lancent...les locks sur l'object LockTimer doivent déconne ou je sais pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 public void Execute() { lock (LockTimer) { _Timer.Stop(); _Timer.Interval = 1; _Timer.Start(); } }
Auriez-vous une autre idée ? Invoke, Raise event ou un truc dans le genre ?
Merci
Partager