rksoftware

Visual Studio とか C# とかが好きです

C# 2.0 以降の新機能の確認 - C# 8.0 - 非同期ストリーム

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);
}