Das effiziente Sammeln und Übertragen von Daten an einen Dienst ohne Beeinträchtigung der Benutzererfahrung erfordert die regelmäßige Ausführung der Methode in einem separaten Thread. Während die Timer
-Klasse von C# eine periodische Methodenausführung bietet, stimmen ihre Parameteranforderungen möglicherweise nicht mit asynchronen Methoden überein.
Dieses Beispiel zeigt den Aufruf einer asynchronen Methode ohne die Parametereinschränkungen von Timer
:
<code class="language-csharp">public async Task PeriodicFooAsync(TimeSpan interval, CancellationToken cancellationToken) { while (!cancellationToken.IsCancellationRequested) { await FooAsync(); await Task.Delay(interval, cancellationToken); } }</code>
Hier:
PeriodicFooAsync
ruft wiederholt an FooAsync
.interval
legt die Verzögerung zwischen den Ausführungen fest.cancellationToken
ermöglicht eine kontrollierte Beendigung. Dies ist für ein ordnungsgemäßes Herunterfahren von entscheidender Bedeutung.Dieser Ansatz ist zwar in allgemeinen .NET-Anwendungen effektiv, erfordert jedoch sorgfältige Überlegungen innerhalb von ASP.NET. Unkontrollierte asynchrone „Fire-and-Forget“-Vorgänge können zu Problemen führen. Für robuste ASP.NET-Lösungen untersuchen Sie Bibliotheken wie Hangfire oder ziehen Sie Ressourcen wie „Fire and Forget on ASP.NET“ von Stephen Cleary und „How to run Background Tasks in ASP.NET“ von Scott Hanselman zu Rate, um Best Practices zu finden.
Das obige ist der detaillierte Inhalt vonWie kann ich in regelmäßigen Abständen in C# asynchronisierte Methoden starten, ohne Benutzeranfragen zu blockieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!