Maison > développement back-end > C++ > Comment planifier récursivement les tâches asynchrones dans ASP.NET Core?

Comment planifier récursivement les tâches asynchrones dans ASP.NET Core?

Susan Sarandon
Libérer: 2025-01-26 10:56:09
original
665 Les gens l'ont consulté

How to Recursively Schedule Async Tasks in ASP.NET Core?

Implémentation de tâches asynchrones récurrentes dans ASP.NET Core

Les applications de base ASP.NET nécessitent souvent l'exécution périodique des tâches d'arrière-plan sans avoir un impact sur les demandes de l'utilisateur. Cet article explore une solution pour créer une tâche asynchrone récurrente, similaire à JavaScript setInterval().

Le défi:

L'objectif est d'exécuter régulièrement une méthode asynchrone (par exemple, l'envoi de données collectées à un service distant) sans bloquer les interactions utilisateur. La difficulté réside dans la planification de cette tâche asynchrone de manière appropriée.

Une solution simple (avec des mises en garde):

La classe

. Cependant, la signature requise (Timer) est incompatible avec une signature de méthode Elapsed (void MethodName(object e, ElapsedEventArgs args)). async async Task MethodName(object e, ElapsedEventArgs args)

Solution de contournement en utilisant

: Task.Delay() Cette incompatibilité peut être surmontée à l'aide d'une boucle

et

, qui utilise en interne une minuterie: while Task.Delay()

Cela exécute efficacement
<code class="language-csharp">public async Task PeriodicFooAsync(TimeSpan interval, CancellationToken cancellationToken)
{
    while (!cancellationToken.IsCancellationRequested)
    {
        await FooAsync();
        await Task.Delay(interval, cancellationToken);
    }
}</code>
Copier après la connexion
au niveau du

spécifié. L'ajout critique est FooAsync(), permettant la terminaison gracieuse des tâches, particulièrement importante lors de l'arrêt de l'application. interval cancellationToken

Considérations importantes pour ASP.NET Core:

Bien que fonctionnel dans les applications .NET générales, cette approche nécessite la prudence dans le noyau ASP.NET. La nature "incendie et inoubliable" de cette méthode peut entraîner des problèmes. Pour une gestion des tâches de fond robuste dans ASP.NET Core, envisagez des solutions établies comme Hangfire ou les techniques détaillées dans "Fire and Forget on Asp.net" de Stephen Cleary et "Comment exécuter les tâches de fond de Scott Hanselman dans ASP.NET". Ces ressources fournissent des méthodes plus sophistiquées et fiables pour gérer les processus d'arrière-plan de longue date ou asynchrones dans l'environnement Core ASP.NET.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal