使用CancellationTokenSource取消TaskCompletionSource不会更新Task.Status?

时间:2013-07-14 14:29:02

标签: c# task-parallel-library

这对我来说似乎不直观:

var cts = new CancellationTokenSource();
cts.Cancel();
var tcs = new TaskCompletionSource<int>();
try
{
    tcs.Task.Wait(cts.Token);
}
catch (OperationCanceledException)
{   
    Console.WriteLine(tcs.Task.Status); //TaskStatus.WaitingForActivation
}

我希望它将状态更新为TaskStatus.Canceled。将其留在TaskStatus.WaitingForActivation中的理由是什么?

1 个答案:

答案 0 :(得分:3)

你误解了Wait()

Wait(CancellationToken)可让您取消等待操作 它对基础任务没有影响。