C# 8 : Asynchronous Streams and Static Local Functions

Asynchronous StreamHow often have you come across situations when you would want to return streams of data from an asynchronous method ? Plenty of times I would guess. The asynchronous methods were pretty limited when return data in streams, but not any longer.  Consider the following code. // Will not compile public static async Task<IEnumerable<int>> Generate(int max) { for (int i = 0; i < max; i++) { await Task.Delay(1000); yield return i; } } The above code would not compile. There is no way you could `yield return` values (or in other words, stream values) from an asynchronous method. This would have been a highly useful situation when you want to iterate over results from a query over an extremely large database. There are other countless situation the ability to stream data from asynchronous method could be useful. However, prior to C# 8.0, we were severely handicapped in such a situation. With C# 8.0, .Net comprises a new Type called the IAsyncEnumerable, which allows us to accomplis this. The above code could be now rewritten … Continue reading C# 8 : Asynchronous Streams and Static Local Functions