La collecte et la transmission efficaces de données à un service sans impact sur l'expérience utilisateur nécessitent l'exécution périodique de méthodes sur un thread distinct. Bien que la classe Timer
de C# propose une exécution périodique de méthodes, ses exigences en matière de paramètres peuvent ne pas correspondre aux méthodes asynchrones.
Cet exemple montre l'appel d'une méthode asynchrone sans les contraintes de paramètres de Timer
:
<code class="language-csharp">public async Task PeriodicFooAsync(TimeSpan interval, CancellationToken cancellationToken) { while (!cancellationToken.IsCancellationRequested) { await FooAsync(); await Task.Delay(interval, cancellationToken); } }</code>
Ici :
PeriodicFooAsync
appelle à plusieurs reprises FooAsync
.interval
définit le délai entre les exécutions.cancellationToken
permet une résiliation contrôlée. Ceci est crucial pour un arrêt en douceur.Bien qu'efficace dans les applications .NET générales, cette approche nécessite un examen attentif au sein d'ASP.NET. Les opérations asynchrones incontrôlées « déclencher et oublier » peuvent créer des problèmes. Pour des solutions ASP.NET robustes, étudiez des bibliothèques comme Hangfire ou consultez des ressources telles que « Fire and Forget on ASP.NET » de Stephen Cleary et « Comment exécuter des tâches en arrière-plan dans ASP.NET » de Scott Hanselman pour connaître les meilleures pratiques.
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!