J'ai écrit un simple programme WinForm en C# qui affiche l'heure, en mettant à jour chaque seconde en créant un événement. Bien que cela commence bien, après un certain temps, je remarque qu'il se met à jour plus rapidement que chaque seconde. Comme plus de temps passe, il continue d'augmenter sa vitesse de mise à jour. Des pensées?Minuterie accélérer
public static void Update(){
if(!Pause) {
aTimer = new System.Timers.Timer(1000);
aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
aTimer.Enabled = true;
}
}
private static void OnTimedEvent(object source,ElapsedEventArgs e) {
Form1obj.updateLabel1(DateTime.Now.ToString());
}
Dans ma classe Form:
public void updateLabel1(string msg) {
if (this.label1.InvokeRequired)
{
SetTextCallback d = new SetTextCallback(updateLabel1);
this.Invoke(d, new object[] { msg });
}
else
this.label1.Text = msg;
}
Assurez-vous que vous n'êtes pas abonné à 'OnTimedEvent' plusieurs fois. –
@ zespri-regardant à nouveau le code, qui ressemble le coupable le plus probable. Vous voudrez peut-être l'ajouter comme réponse. – AllenG
Plusieurs conditions entraînent un appel à Update(), mais je suis sûr qu'elles ne le font qu'une fois par seconde au total. Je vais essayer avec un seul et voir si c'est le problème. – Andrew