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.