【发布时间】:2020-03-13 20:34:23
【问题描述】:
我正在修改 C# 8.0 中的新 IAsyncEnumerable<T> 内容。假设我在某处想使用某种方法:
public IAsyncEnumerable<T> SomeBlackBoxFunctionAsync<T>(...) { ... }
我知道我可以将它与await foreach... 语法一起使用。但是,假设我的消费者需要从该函数获得所有结果,然后才能继续。在继续之前等待所有结果的最佳语法是什么?换句话说,我希望能够执行以下操作:
// but that extension - AllResultsAsync() - doesn't exist :-/
List<T> myList = await SomeBlackBoxFunctionAsync<T>().AllResultsAsync();
这样做的正确方法是什么?
【问题讨论】:
-
Task.WaitAll() ??
-
@AzharKhorasany 该语法是什么样的?我已经修改了
Task.WhenAll(),但我无法让它工作。 -
await foreach (var item in SomeBlackBoxFunctionAsync<T>()) myList.Add(item); -
从您的方法中返回任务,然后等待所有。
-
为什么要在处理结果之前消耗整个流?根据定义,异步流可能永远不会结束
标签: c# c#-8.0 iasyncenumerable