【问题标题】:Using `Task.WhenAll` with `INotifyCompletion`将 `Task.WhenAll` 与 `INotifyCompletion` 一起使用
【发布时间】:2020-10-27 12:59:24
【问题描述】:

我有一个自定义操作,它实现了GetAwaiter 方法,它返回一个实现INotifyCompletion 的自定义对象。

Task.WhenAll 仅支持 Task 的实例。有什么方法可以围绕INotifyCompletion 包装任务?

编辑:原因是我想等待其中的多个。

【问题讨论】:

  • Is there any way to wrap a task around a INotifyCompletion,是的,但是您是否想将所有任务包装到 INotifyCompletion 中;基本上当所有任务完成后通知?
  • 没有。我基本上希望能够将INotifyCompletion 和任务混合并匹配到Task.WhenAll 调用中。
  • 也许使用TaskCompletionSource

标签: c# asynchronous task


【解决方案1】:

回答我自己的问题。我通过将以下方法添加到我的类中解决了这个问题,该类具有GetAwaiter 方法。

public async Task GetTask() {
    await this;
}

那我可以打电话给Task.WhenAll(myCustomAwaitableObject.GetTask())

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 2022-11-15
    • 2021-09-22
    • 2013-10-06
    • 1970-01-01
    相关资源
    最近更新 更多