</>
Plan du cours — 43/46

Services en arrière-plan (BackgroundService)

Avancé

Pour exécuter du code de manière continue à côté du serveur web (traitement de file, tâche planifiée, worker...), sans dépendre d'une requête HTTP.

public class NettoyageService(ILogger<NettoyageService> logger) : BackgroundService
{
    protected override async Task ExecuteAsync(CancellationToken stoppingToken)
    {
        while (!stoppingToken.IsCancellationRequested)
        {
            logger.LogInformation("Nettoyage des fichiers temporaires...");
            // ... logique de nettoyage ...

            await Task.Delay(TimeSpan.FromHours(1), stoppingToken);
        }
    }
}

// Enregistrement
builder.Services.AddHostedService<NettoyageService>();

Astuce : stoppingToken est annulé automatiquement quand l'application s'arrête — le respecter permet un arrêt propre (graceful shutdown) au lieu de couper brutalement une tâche en cours.