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(ouasync Task<T>) et utiliserawait. Une méthodeasync voidest à éviter — sauf pour les handlers d'événements — car les exceptions qu'elle lève ne peuvent pas êtrecatchées par l'appelant.