我在我的Windows Forms中退出线程遇到了问题。
我有一个经典的Windows Forms应用程序正在运行。我需要每隔一段时间执行一些操作,因此我添加了:
一切都运行正常,直到我的计时器线程突然退出并显示消息:
相同的问题也发生在我的FileSystemWatcher上,它也调用DoSomething方法。这两个事件是独立的,并且在随机时间退出(至少我没有找到任何规律)。
是什么导致了这种情况,我该如何防止它?
我有一个经典的Windows Forms应用程序正在运行。我需要每隔一段时间执行一些操作,因此我添加了:
TimerCallback timerDelegate = new TimerCallback(this.TryDoSomething);
int period = 10 * 1000; // to miliseconds
System.Threading.Timer stateTimer = new System.Threading.Timer(timerDelegate, null, period, period);
DoSomething 方法只被少数线程(主线程和计时器)调用,因此我这样封装它:
private void TryDoSomething(object o)
{
lock (tryDoSomethingMutex)
{
if (this.dataGridView1.InvokeRequired)
{
RefreshCallback d = new RefreshCallback(DoSomething);
this.Invoke(d, new object[] { o });
}
else
{
this.DoSomething(o);
}
}
}
一切都运行正常,直到我的计时器线程突然退出并显示消息:
The thread 0x2798 has exited with code 0 (0x0).
相同的问题也发生在我的FileSystemWatcher上,它也调用DoSomething方法。这两个事件是独立的,并且在随机时间退出(至少我没有找到任何规律)。
是什么导致了这种情况,我该如何防止它?