我在Windows窗體中退出線程時遇到問題。線程在Windows窗體中用代碼0退出
我有經典的Windows窗體,它正在運行。我需要做一些事情每隔一段時間,所以我說:
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);
}
}
}
一切工作不錯,直到我的timer線程只是消息退出:
The thread 0x2798 has exited with code 0 (0x0).
同樣的事情發生到我的FileSystemWatcher的,這也叫DoSomething的方法。 這兩個事件是獨立的,隨機時間退出(至少我沒有找到任何規則)
什麼原因導致這種情況,我該如何防止它?
它不是一個錯誤,它只是表明該線程已完成其執行。 –
直到你的時間線程退出?所以它不是要退出?你不是適合時間的那個嗎? –
這就是問題 - 我不是。定時器設置爲每一段時間都會執行某些操作,並且隨機時間突然退出(但沒有任何錯誤)。 –