【问题标题】:Why does TaskFactory.StartNew receive a CancellationToken [duplicate]为什么 TaskFactory.StartNew 会收到 CancellationToken [重复]
【发布时间】:2012-06-02 15:43:30
【问题描述】:
可能重复:
Cancellation token in Task constructor: why?
此方法接收一个 CancellationToken:
CancellationTokenSource cts = new CancellationTokenSource(4);
var t = Task.Factory.StartNew(() => { // code }, cts.Token);
既然取消是合作的(实际工作的代码需要观察取消令牌),把这个作为参数传递给StartNew方法的目的是什么?
【问题讨论】:
标签:
c#
.net
task-parallel-library
task
cancellation-token
【解决方案1】:
它允许将任务本身标记为已取消,这可以允许任何正在等待第一个任务的任务被触发(即任何使用 task.ContinueWith() 方法排队的任务)。当然,如果主要任务被取消,这些后续任务很可能也需要取消。
您说得对,正在执行的实际代码也需要遵守取消标记。