2011-01-06 123 views
2

我有關於backgroundworker的問題。C#停止BackgroundWorker

我在backgroundworker中有無限循環。我怎樣才能阻止它?

+1

請發佈您的工作人員的代碼,以便我們對問題的內容有更多的瞭解。 (即使你刪除了代碼塊並且只顯示你初始化worker的位置,你的工作人員正在做什麼,你正在做什麼來阻止它)。 – 2011-01-06 18:36:47

回答

10

將其更改爲無限循環。

BackgroundWorker內置支持取消。取消後臺工作人員致電BackgroundWorker.CancelAsync。您還需要修改工作代碼以檢查文檔中提到的取消操作:

CancelAsync提交終止掛起後臺操作的請求並將CancellationPending屬性設置爲true。

當您調用CancelAsync時,您的工作方法有機會停止其執行並退出。工作人員代碼應定期檢查CancellationPending屬性以查看它是否已設置爲true。

因此,舉例來說,如果你在你的工作線程這個無限循環:

while (true) 
{ 
    ... 
} 

,那麼你可以將其更改爲:

while (!backgroundWorker.CancellationPending) 
{ 
    ... 
} 

註銷工作,你還需要設置物業BackgroundWorker.WorkerSupportsCancellationtrue。這可以在設計者中完成。