c# - C#/.NET 4.0+ 实现可取消后台线程的方法是什么?

标签 c# .net multithreading .net-4.0

在 .NET 4.0 之前,我的理解是,如果想启动一个线程来完成一些可以取消的工作,则需要启动一个 BackgroundWorker。 .NET 4 带来了 TAP 模型,以及一大堆新的异步和线程内容。 BackgroundWorker 仍然是这样做的方式吗?

最佳答案

在现代代码中,我建议使用带有 CancellationTokenTask.Run。相比之下,BackgroundWorker 风格的取消相当复杂:它需要 DoWork 委托(delegate)来监视它自己的 BackgroundWorker 实例,并将取消请求视为 bool 值而不是异常。

我有一个 blog post更详细。

关于c# - C#/.NET 4.0+ 实现可取消后台线程的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30175576/

相关文章:

c# - 谁处置 IDisposable 公共(public)属性(property)?

c++ - boost::thread 构建错误(无法链接 lib && 未解析的外部)

java - SimpleDateFormat.clone() 是线程安全的吗?

只读分配的 C# 错误

c# - 如何复制一个对象的实例,如果该对象发生变化,该实例不会?

c# - ConfigurationManager 返回 null 而不是字符串值

multithreading - C++ 0x中线程之间的异常传播

c# - Entity Framework 代码首先 : 1:0. .1 更改外键位置

c# - Office 365 API 身份验证表单 REST API

.net - 为什么需要锁来实现 readonly int 属性?