</>
Plan du cours — 39/46

Exécution parallèle

Avancé
// Séquentiel : ~300ms au total si chaque appel prend 100ms
var u1 = await RecupererUtilisateurAsync(1);
var u2 = await RecupererUtilisateurAsync(2);
var u3 = await RecupererUtilisateurAsync(3);

// Parallèle : ~100ms au total, les 3 appels partent en même temps
var tache1 = RecupererUtilisateurAsync(1);
var tache2 = RecupererUtilisateurAsync(2);
var tache3 = RecupererUtilisateurAsync(3);

var resultats = await Task.WhenAll(tache1, tache2, tache3);
// WhenAny : réagir dès que la première tâche se termine (ex : timeout manuel)
var tacheAppel = RecupererUtilisateurAsync(1);
var tacheTimeout = Task.Delay(TimeSpan.FromSeconds(5));

var premiereTerminee = await Task.WhenAny(tacheAppel, tacheTimeout);
if (premiereTerminee == tacheTimeout)
{
    throw new TimeoutException("L'appel a dépassé 5 secondes.");
}