【问题标题】:Why is the task from TaskCompletionSource not completed after 5 seconds?为什么 TaskCompletionSource 的任务在 5 秒后没有完成?
【发布时间】:2022-01-18 20:08:52
【问题描述】:

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

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

  await completionSource.Task;
}

【问题讨论】:

标签: c# cancellationtokensource taskcompletionsource


【解决方案1】:

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

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

您可能想使用SetCanceled 方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-26
    • 1970-01-01
    相关资源
    最近更新 更多