我試圖想出一個辦法來驗證一個BackgroundWorker線程是活的(即仍在運行的線程是一個簡單的無限循環的基本實現:BackgroundWorker的IsBusy與「IsAlive」相同嗎?
while (AllConditionsMet())
{
DoSomeMagic();
Thread.Sleep(10000);
}
的最接近IsAlive()
我發現至今是IsBusy財產,但考慮到我的線程睡眠()■大部分的時間,我不知道這是否會做工作
我能指望IsBusy做:
if (!myWorker.IsBusy)
RestartWorker();
還是我呼喚麻煩?
如果isBusy爲false Backgroundworker沒有做任何工作,所以你不會因使用顯示的代碼而陷入困境。 只有「RestartWorker()」方法是錯誤的,因爲Worker尚未啓動。但這更像是一種語言,而不是編程問題。 – jAC
如果您在線程中實現代碼以自行重新啓動,您正在尋求麻煩。你會更好,檢測失敗情況,結束該線程並重新啓動一個全新的線程。否則,你很可能會陷入僵局。 –