C# 2.0 以降の新機能を一つづつ確認していきます。
以前に一度行ったのですが、公式ドキュメント再編でリンク切れしているところを見つけてしまったので。今ならもっと簡潔なサンプルが欠けるところもあるだろうし、せっかくなので今もう一度確認して行きます。
非同期ストリーム
https://docs.microsoft.com/ja-jp/dotnet/csharp/tutorials/generate-consume-asynchronous-stream
ストリームを非同期で扱える。
// async System.Collections.Generic.IAsyncEnumerable メソッド名() でメソッドを宣言する async System.Collections.Generic.IAsyncEnumerable<int> GenerateSequence() { for (int i = 0; i < 20; i++) { // メソッドの中で await できる await Task.Delay(1000); // メソッドの中では yield return する yield return i; } } // foreach に await を付ける await foreach (var number in GenerateSequence()) { Console.WriteLine(number); }