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!