.net Core Background Task Example

4 min read Jun 03, 2024
.net Core Background Task Example

Exemples de tâches de fond avec .NET Core

Les tâches de fond sont des opérations qui s'exécutent en arrière-plan, indépendamment de la requête principale de l'utilisateur. Elles sont utiles pour des tâches comme la planification de travaux, la surveillance de processus, ou la mise à jour de données. .NET Core offre plusieurs façons d'implémenter des tâches de fond.

Tâches de fond avec IHostedService

L'interface IHostedService est un moyen simple et puissant pour exécuter des tâches de fond dans une application .NET Core. Pour créer une tâche de fond, il suffit de créer une classe qui implémente l'interface IHostedService.

public class MyBackgroundTask : IHostedService, IDisposable
{
    private readonly ILogger _logger;
    private Timer _timer;

    public MyBackgroundTask(ILogger logger)
    {
        _logger = logger;
    }

    public Task StartAsync(CancellationToken cancellationToken)
    {
        _logger.LogInformation("Starting background task.");
        // Démarrez la tâche de fond ici
        _timer = new Timer(DoWork, null, 0, 10000); // Exécute la tâche toutes les 10 secondes

        return Task.CompletedTask;
    }

    private void DoWork(object state)
    {
        _logger.LogInformation("Doing some work...");
        // Code pour exécuter la tâche de fond
    }

    public Task StopAsync(CancellationToken cancellationToken)
    {
        _logger.LogInformation("Stopping background task.");
        _timer?.Dispose();

        return Task.CompletedTask;
    }

    public void Dispose()
    {
        _timer?.Dispose();
    }
}

Tâches de fond avec BackgroundService

La classe BackgroundService est une implémentation abstraite de IHostedService qui simplifie la création de tâches de fond. Elle fournit des méthodes pour démarrer et arrêter la tâche, ainsi que pour gérer le cycle de vie de la tâche.

public class MyBackgroundService : BackgroundService
{
    private readonly ILogger _logger;

    public MyBackgroundService(ILogger logger)
    {
        _logger = logger;
    }

    protected override async Task ExecuteAsync(CancellationToken stoppingToken)
    {
        while (!stoppingToken.IsCancellationRequested)
        {
            _logger.LogInformation("Doing some work...");
            // Code pour exécuter la tâche de fond
            await Task.Delay(10000, stoppingToken); // Attend 10 secondes
        }
    }
}

Tâches de fond avec Timer

La classe Timer permet de planifier des tâches qui s'exécutent à intervalles réguliers. Vous pouvez utiliser Timer pour créer des tâches de fond qui doivent s'exécuter à un moment précis ou à intervalles réguliers.

public class MyBackgroundTask
{
    private Timer _timer;

    public MyBackgroundTask()
    {
        _timer = new Timer(DoWork, null, 0, 10000); // Exécute la tâche toutes les 10 secondes
    }

    private void DoWork(object state)
    {
        // Code pour exécuter la tâche de fond
    }
}

Conclusion

.NET Core offre plusieurs façons d'implémenter des tâches de fond. Vous pouvez choisir la méthode qui convient le mieux à vos besoins en fonction de la complexité de la tâche, de la fréquence d'exécution et de la durée de la tâche.

Important : N'oubliez pas de gérer les exceptions et de surveiller les tâches de fond pour vous assurer qu'elles s'exécutent correctement. Vous pouvez utiliser des outils de journalisation et de surveillance pour suivre les erreurs et les performances de vos tâches de fond.