什么是C#8.0中的异步流?
C#8.0引入了异步流,该流为数据的流源建模。数据流通常异步检索或生成元素。
现在,生成序列的代码可以使用yieldreturn返回使用async修饰符声明的方法中的元素。
我们可以使用awaitforeach循环来消耗异步流。
语法如下
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!