Таймер ускорения - PullRequest
       2

Таймер ускорения

1 голос
/ 08 июня 2011

Я написал простую программу WinForm на C #, которая отображает время, обновляя каждую секунду, создавая событие. Хотя все начинается нормально, через некоторое время я замечаю, что он обновляется быстрее, чем каждую секунду. По мере того как проходит больше времени, он продолжает увеличивать скорость обновления. Есть мысли?

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());
}

В моем классе Форма:

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;

}

1 Ответ

2 голосов
/ 08 июня 2011

Если вы вызываете update несколько раз, вы будете подписываться несколько раз на одно и то же событие.

Поэтому убедитесь, что вы делаете
aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);

один раз (когда страницапостроен например)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...