我有一個計時器事件,每秒觸發。有時當我退出程序(在VS調試器中)時,它告訴我事件線程正試圖訪問不再存在的對象(因爲主線程已結束)。我在退出之前嘗試禁用該事件(UpdateTime.aTimer.Enabled = false;
)。這樣可以減少發生此問題的次數,但有時會發生這種情況,因爲事件在我禁用之前會觸發。殺死事件線程
- 這是一個嚴重的問題?如果我不處理它,Will會困擾我嗎?
- 如果對上述是,我該如何殺死它?
我問第二個問題,因爲我沒有參考事件線程,所以我不知道如何告訴它停止或等待它完成。
編輯:更多的上下文。這是一個Winform。
此外,我沒有明確創建一個線程。這是我的理解,一個線程是自動創建來處理事件。
創建定時器:
public static void Update(){
System.Timers.Timer aTimer = new System.Timers.Timer(1000);
aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
aTimer.Enabled = true;
}
事件處理程序:
private static void OnTimedEvent(object source,ElapsedEventArgs e) {
Form1obj.updateLabel(String.Format("{0}", DateTime.Now.Second),Label1);
}
關閉程序處理程序:
private void Form1_FormClosing(object sender,FormClosingEventArgs e) {
aTimer.Enabled = false;
}