为什么来自 TaskCompletionSource 的任务在 5 秒后没有完成?

Why is the task from TaskCompletionSource not completed after 5 seconds?

当我将 CancellationTokenSource 设置为 5 秒后取消时。 TaskCompletionSource 不会被取消。

[Test]
public async Task Test()
{
  var cts = new CancellationTokenSource(TimeSpan.FromSeconds(5));      
  var completionSource = new TaskCompletionSource(cts.Token);

  await completionSource.Task;
}

TaskCompletionSource 对象在构造函数中不采用取消标记,它采用任何 object。它不应该收听取消标记。

您可以阅读 MSDN article 以了解构造函数的作用以及如何使用 TaskCompletionSource 对象。

您可能想使用 SetCanceled 方法。