C# 8.0 中的非同步流是什麼?


C# 8.0 引入了非同步流,該流對資料流源進行建模。資料流通常會非同步檢索或生成元素。

生成序列的程式碼現在可以使用 yield return 在使用 async 修飾符宣告的方法中返回元素。

我們可以使用 await foreach 迴圈消耗非同步流。

以下語法

static IEnumerable<string> Message(){
   yield return "Hello!";
   yield return "Hello!";
}
Can be replaced by IAsyncEnumerable
static async IAsyncEnumerable<string> MessageAsync(){
   await Task.Delay(2000);
   yield return "Hello!";
   await Task.Delay(2000);
   yield return "Hello!";
}

示例

class Program{
   public static async Task Main(){
      await foreach (var item in MessageAsync()){
         System.Console.WriteLine(item);
      }
      Console.ReadLine();
   }
   static async IAsyncEnumerable<string> MessageAsync(){
      await Task.Delay(2000);
      yield return "Hello!";
      await Task.Delay(2000);
      yield return "Hello!";
   }
}

輸出

Hello!
Hello!

更新日期:2020 年 8 月 19 日

175 次瀏覽

開啟您的 職業生涯

完成課程後獲得認證

立即開始
廣告
© . All rights reserved.