Dans une application Silverlight, j'ai un bloc de code qui doit s'exécuter toutes les 500ms. Je prévois d'utiliser un DispatcherTimer pour y parvenir (voir le code ci-dessous).DispatchTimer - Empêche le déclenchement de l'événement tick si le tick précédent est toujours en cours
DispatcherTimer dt = new DispatcherTimer();
dt.Interval = new TimeSpan(0, 0, 0, 0, 500); // 500 Milliseconds
dt.Tick += new EventHandler(dt_Tick);
dt.Start();
Cependant, il peut arriver que le bloc de code prend plus de 500 ms pour exécuter (le bloc de code fait quelques appels WebService). Comment puis-je m'assurer que si un appel est en cours, le DispatcherTimer ne déclenche pas un autre événement? Quelles sont les options et quelle est la meilleure façon? À l'aide de verrous?
J'ai oublié de mentionner que j'utilise Silverlight pour Windows Phone. Je ne trouve pas System.Timers.Timer. – Martin
@Martin: D'accord, utilisez plutôt System.Threading.Timer. Même principe de base :) –
Une dernière question Jon. Si j'utilise le System.Timers.Timer, est-il possible que deux événements tick puissent être exécutés en même temps? – Martin