Aller au contenu

await foreach

Contexte : await foreach itère sur un IAsyncEnumerable<T> de manière asynchrone, attendant chaque élément avant d’exécuter le corps de la boucle.

using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
public class Example
{
public static async Task Main()
{
await foreach (var item in GetDataAsync())
{
Console.WriteLine(item);
}
}
private static async IAsyncEnumerable<int> GetDataAsync()
{
for (int i = 0; i < 5; i++)
{
await Task.Delay(100);
yield return i;
}
}
}

Vous pouvez passer un CancellationToken à la méthode GetAsyncEnumerator.

var cts = new CancellationTokenSource();
await foreach (var item in GetDataAsync().WithCancellation(cts.Token))
{
// ...
}

Traitement de réponses d’API paginées : Chaque page est récupérée de manière asynchrone, et vous utilisez await foreach pour itérer sur les pages.

Exemple : Documentation sur les flux asynchrones .NET