.net Core Scheduled Background Task

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

Tâches de fond planifiées avec .NET Core

Introduction

.NET Core offre un moyen simple et efficace de mettre en place des tâches de fond planifiées. Ces tâches, qui s'exécutent en arrière-plan, sont idéales pour des opérations répétitives ou automatiques telles que la synchronisation de données, la génération de rapports, l'envoi d'e-mails programmés ou la mise à jour de caches. Dans cet article, nous allons explorer différentes approches pour planifier des tâches de fond dans vos applications .NET Core.

Méthodes de planification

1. Hosted Services

Les services hébergés sont une fonctionnalité intégrée de .NET Core qui permet de créer des tâches de fond durables. Pour planifier une tâche, vous devez implémenter l'interface IHostedService et utiliser le service ITimer fourni par le framework.

Exemple:

public class ScheduledTask : IHostedService, IDisposable
{
    private Timer _timer;

    public Task StartAsync(CancellationToken cancellationToken)
    {
        _timer = new Timer(DoWork, null, TimeSpan.Zero, TimeSpan.FromSeconds(10));
        return Task.CompletedTask;
    }

    private void DoWork(object state)
    {
        // Code à exécuter toutes les 10 secondes
    }

    public Task StopAsync(CancellationToken cancellationToken)
    {
        _timer?.Dispose();
        return Task.CompletedTask;
    }

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

2. Cron Expressions

Les expressions Cron vous permettent de définir des planifications complexes pour vos tâches de fond. Vous pouvez utiliser des bibliothèques externes comme Quartz.NET ou Hangfire pour intégrer des expressions Cron dans votre application .NET Core.

Exemple (avec Quartz.NET):

public class ScheduledTask : IJob
{
    public Task Execute(IJobExecutionContext context)
    {
        // Code à exécuter selon la planification définie
        return Task.CompletedTask;
    }
}

// Définition de la planification avec une expression Cron
var scheduler = new StdSchedulerFactory().GetScheduler();
await scheduler.Start();

var job = JobBuilder.Create().Build();
var trigger = TriggerBuilder.Create()
    .WithCronSchedule("0 0 12 * * ?") // Exécution tous les jours à midi
    .Build();

await scheduler.ScheduleJob(job, trigger);

3. Background Tasks

Les tâches de fond sont une solution simple pour exécuter du code de manière asynchrone. Vous pouvez utiliser l'API Task.Run() ou des méthodes d'extension comme ExecuteAsync pour exécuter des tâches en arrière-plan.

Exemple:

public class MyService
{
    public async Task DoSomethingAsync()
    {
        await Task.Run(() =>
        {
            // Code à exécuter en tâche de fond
        });
    }
}

Conclusion

Les tâches de fond planifiées sont un outil puissant pour automatiser des tâches répétitives ou pour améliorer les performances de vos applications .NET Core. Choisissez la méthode de planification qui convient le mieux à vos besoins et à la complexité de votre application. N'oubliez pas de gérer correctement les erreurs et de surveiller l'exécution de vos tâches de fond afin d'assurer leur bon fonctionnement.

Related Post


Featured Posts