c# - 为什么 TaskFactory.StartNew 收到 CancellationToken

标签 c# .net task-parallel-library task cancellation-token

<分区>

Possible Duplicate:
Cancellation token in Task constructor: why?

此方法接收一个 CancellationToken:

CancellationTokenSource cts = new CancellationTokenSource(4);
var t = Task.Factory.StartNew(() => { // code }, cts.Token);

由于取消是合作的(实际工作代码需要观察取消 token ),将其作为参数传递给 StartNew 方法的目的是什么?

最佳答案

它允许任务本身被标记为已取消,这可以允许任何正在等待第一个任务的任务被触发(即任何使用 task.ContinueWith() 方法排队的任务)。当然,如果主要任务被取消,那些后续任务也很可能需要被取消。

而且您完全正确,正在执行的实际代码也需要遵守取消标记。

关于c# - 为什么 TaskFactory.StartNew 收到 CancellationToken,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10863693/

相关文章:

c# - 为什么在 foreach 中对 Linq 分组选择所做的更改会被忽略,除非我添加 ToList()?

c# - 从另一个类库中的 ViewModel 关闭窗口

WCF/.NET 中的 C# UTC 日期时间查询

.net - Microsoft.AspNet.Identity 源代码可用性

c# - Foreach 循环和带锁定的变量

c# - 在 WPF 中创建动态 CRUD UI

c# - 如何在 WPF 中暂停绑定(bind)的 UI 更新?

.net - 我应该使用 TDD 吗?

c# - 你必须等待异步方法吗?

c# - 库中的 ConfigureAwait(false) 是否会丢失调用应用程序的同步上下文?