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!