我在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());
}
在我的窗體類:
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;
}
確保你不訂閱'OnTimedEvent'幾次。 – 2011-06-07 20:06:30
@ zespri-再次查看代碼,看起來像是最有可能的罪魁禍首。您可能希望將其添加爲答案。 – AllenG 2011-06-07 20:10:56
有幾種不同的條件會導致對Update()的調用,但我確定它們每秒只能執行一次。我只用一個來試一下,看看這是不是問題。 – Andrew 2011-06-07 20:15:30