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!