DEV Community

Juarez Júnior
Juarez Júnior

Posted on

C# Tip: Async Streams

Let’s talk about Async Streams, introduced in C# 8, which allow working with asynchronous data streams efficiently and naturally. See the example in the code below.

using System;
using System.Collections.Generic;
using System.Threading.Tasks;

public class Program
{
    public static async Task Main()
    {
        await foreach (var number in GenerateNumbersAsync())
        {
            Console.WriteLine(number);
        }
    }

    public static async IAsyncEnumerable<int> GenerateNumbersAsync()
    {
        for (int i = 1; i <= 5; i++)
        {
            await Task.Delay(1000); // Simulates an asynchronous operation
            yield return i;
        }
    }
}
Enter fullscreen mode Exit fullscreen mode

Explanation:
With Async Streams, you can consume data asynchronously, item by item, using the await keyword in a foreach loop. This is especially useful when dealing with large amounts of data or when data is received gradually, such as in file reading operations, HTTP requests, or real-time data processing. In the example above, we show how to use IAsyncEnumerable to read and process data asynchronously.

Source code: GitHub

I hope this tip helps you use Async Streams to make your data reading operations more efficient and responsive! Until next time.

Top comments (0)