定时器加速

时间:2011-06-07 20:04:14

标签: c# winforms timer

我在C#中编写了一个简单的WinForm程序,它显示时间,通过创建事件每秒更新一次。虽然它开始很好,但经过一段时间后,我注意到它的更新速度比每秒都快。随着时间的推移,它会继续提高更新速度。有什么想法吗?

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

在我的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;

}

1 个答案:

答案 0 :(得分:2)

如果多次呼叫更新,您将多次订阅同一事件。

所以请确保你只做了 aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);

一次(例如,当构建页面时)