如何立即取消正在工作的BackgroundWorker?

6

我在使用BackgroundWorkerDoWork方法时遇到了耗时的问题。

每当我尝试通过backgroundWorker1.CancelAsync()取消任务时,backgroundWorker1.CancellationPending会变成挂起状态,我必须等待下一次迭代在DoWork中手动取消任务并退出。

是否有任何方法可以在调用任务后立即取消它?


6
需要更频繁地检查CancellationPending吗? - dtb
1个回答

7

一般情况下,你不能立即安全地终止线程,因为它可能持有会泄漏的资源,更重要的是它可能持有锁。你需要构建你的工作线程来尊重取消标记,并尽快安全退出。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接