2012-02-09 108 views
6

我在我的BackgroundWorkerDoWork中有一個處理時間的過程。如何立即取消工作的BackgroundWorker?

每當我嘗試通過backgroundWorker1.CancelAsync()取消作業時,backgroundWorker1.CancellationPending會變爲待定狀態,我應該等待我的DoWork中的下一個迭代取消作業並自行離開作業。

有什麼辦法在調用它之後立即取消作業?

+6

檢查CancellationPending更頻繁? – dtb 2012-02-09 18:09:58

回答

7

否。一般來說,您不能安全地終止「立即」線程,因爲它可能會佔用會泄漏的資源,更重要的是它可能會持有鎖。您需要組織您的工作人員尊重取消標誌,並儘快安全退出。