</>
Plan du cours — 38/46

Task et async/await

Avancé

async/await permet d'écrire du code asynchrone (I/O réseau, disque, base de données) qui se lit comme du code synchrone, sans bloquer le thread pendant l'attente.

public async Task<Utilisateur> RecupererUtilisateurAsync(int id)
{
    // "await" libère le thread pendant l'appel HTTP,
    // il n'est pas bloqué en attendant la réponse
    var response = await httpClient.GetAsync($"https://api.example.com/users/{id}");
    response.EnsureSuccessStatusCode();

    var utilisateur = await response.Content.ReadFromJsonAsync<Utilisateur>();
    return utilisateur!;
}

Règle simple : dès qu'une méthode fait de l'I/O (réseau, fichier, base de données), elle doit être async Task (ou async Task<T>) et utiliser await. Une méthode async void est à éviter — sauf pour les handlers d'événements — car les exceptions qu'elle lève ne peuvent pas être catchées par l'appelant.