使用CancellationTokenSource取消TaskCompletionSource不会更新Task.Stat
本文关键字:更新 Task Stat CancellationTokenSource 取消 TaskCompletionSource 使用 | 更新日期: 2023-09-27 18:22:26
这对我来说似乎毫无意义:
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
中的理由是什么?
您误解了Wait()
。
Wait(CancellationToken)
允许您取消等待操作
它对基础任务没有影响。