</>
Plan du cours — 40/46

CancellationToken

Avancé

Un CancellationToken propage une demande d'annulation à travers toute une chaîne d'appels asynchrones — indispensable pour annuler une requête HTTP abandonnée par le client, par exemple.

public async Task<Utilisateur?> RecupererUtilisateurAsync(int id, CancellationToken ct)
{
    return await db.Utilisateurs
        .FirstOrDefaultAsync(u => u.Id == id, ct);
}

// ASP.NET Core injecte automatiquement le token lié à la requête HTTP
app.MapGet("/utilisateurs/{id:int}", async (int id, AppDbContext db, CancellationToken ct) =>
{
    var u = await db.Utilisateurs.FirstOrDefaultAsync(x => x.Id == id, ct);
    return u is not null ? Results.Ok(u) : Results.NotFound();
});

// Créer un token avec timeout manuel
using var cts = new CancellationTokenSource(TimeSpan.FromSeconds(10));
await RecupererUtilisateurAsync(1, cts.Token);