我有一个计时器事件,每秒触发。有时当我退出程序(在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;
}