今回は 非同期ストリーム です。この機能は、あるといいのは確かですが、自分自身が使う機会がなさそうで自分でコードを書いて確認したい点が思い浮かばず、公式のコードをそのまま動かしてます。
公式はこちら
このブログでの目次?はこちら
作り方
- async System.Collections.Generic.IAsyncEnumerable
メソッド名() でメソッドを宣言します - メソッドの中では yield return します
- メソッドの中で await ができます
async System.Collections.Generic.IAsyncEnumerable<int> GenerateSequence() { for (int i = 0; i < 20; i++) { await Task.Delay(1000); yield return i; } }
使い方
- await foreach (... in ...) と foreach に await を付けます
await foreach (var number in GenerateSequence()) { Console.WriteLine(number); }
動かしたときに分かりやすいように、サンプルコードから await Task.Delay(100);
を await Task.Delay(1000);
に変えています。