rksoftware

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

C# 8 の確認 - 非同期ストリーム

今回は 非同期ストリーム です。この機能は、あるといいのは確かですが、自分自身が使う機会がなさそうで自分でコードを書いて確認したい点が思い浮かばず、公式のコードをそのまま動かしてます。

公式はこちら

このブログでの目次?はこちら

作り方

  • 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); に変えています。