我在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;
}
答案 0 :(得分:2)
如果多次呼叫更新,您将多次订阅同一事件。
所以请确保你只做了
aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
一次(例如,当构建页面时)