在 .NET 4.0 之前,我的理解是,如果想启动一个线程来完成一些可以取消的工作,则需要启动一个 BackgroundWorker
。 .NET 4 带来了 TAP 模型,以及一大堆新的异步和线程内容。 BackgroundWorker
仍然是这样做的方式吗?
最佳答案
在现代代码中,我建议使用带有 CancellationToken
的 Task.Run
。相比之下,BackgroundWorker
风格的取消相当复杂:它需要 DoWork
委托(delegate)来监视它自己的 BackgroundWorker
实例,并将取消请求视为 bool 值而不是异常。
我有一个 blog post更详细。
关于c# - C#/.NET 4.0+ 实现可取消后台线程的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30175576/