4

可能重复:
任务构造函数中的取消标记:为什么?

此方法接收 CancellationToken:

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

既然取消是合作的(实际工作的代码需要观察取消令牌),那么将 this 作为参数传递给 StartNew 方法的目的是什么?

4

1 回答 1

3

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

而且您绝对正确,正在执行的实际代码也需要遵守取消令牌。

于 2012-06-02T15:52:29.187 回答