12

私はIAsyncEnumerable<T>C# 8.0 の新しいものをいじっています。消費したいメソッドがどこかにあるとしましょう:

public IAsyncEnumerable<T> SomeBlackBoxFunctionAsync<T>(...) { ... }

構文で使用できることを認識していawait foreach...ます。しかし、コンシューマが続行する前に、この関数からのすべての結果を取得する必要があるとしましょう。続行する前にすべての結果を待つのに最適な構文は何ですか? 言い換えれば、次のようなことができるようになりたいです。

// but that extension - AllResultsAsync() - doesn't exist :-/
List<T> myList = await SomeBlackBoxFunctionAsync<T>().AllResultsAsync(); 

これを行う正しい方法は何ですか?

4

3 に答える 3

1

オプションとして、パッケージToArrayAsyncで定義された拡張メソッドを使用できますSystem.Linq.Async

public static ValueTask<TSource[]> ToArrayAsync<TSource>(this IAsyncEnumerable<TSource> source, CancellationToken cancellationToken = default)

定義ごとに、IAsyncEnumerableインターフェースを拡張します

于 2019-11-18T13:35:20.873 に答える