Aller au contenu

Flux asynchrones

Contexte : Les flux asynchrones (C# 8.0) permettent de produire et de consommer des séquences de données de manière asynchrone en utilisant IAsyncEnumerable<T> et await foreach.

using System;
using System.Collections.Generic;
using System.Threading.Tasks;
public class DataProducer
{
public async IAsyncEnumerable<int> GetDataAsync()
{
for (int i = 0; i < 10; i++)
{
await Task.Delay(100);
yield return i;
}
}
}
// Consommateur
public class Program
{
public static async Task Main()
{
var producer = new DataProducer();
await foreach (var item in producer.GetDataAsync())
{
Console.WriteLine(item);
}
}
}

Lecture de gros fichiers ligne par ligne : Traitez chaque ligne de manière asynchrone sans charger tout le fichier en mémoire.

Exemple : System.IO.Stream peut être encapsulé dans un flux asynchrone.