Implementierung regelmäßig geplanter asynchroner Vorgänge in C#-Webanwendungen
Herausforderung:
Viele C#-Webanwendungen erfordern die regelmäßige Ausführung von Aufgaben, wie z. B. das Senden von Nutzungsdaten an einen Remotedienst, ohne die Reaktionsfähigkeit von Benutzeranfragen zu beeinträchtigen. Dies erfordert einen Mechanismus analog zur setInterval
-Funktion von JavaScript, jedoch im asynchronen Kontext von C#.
Ansatz:
Während die Timer
-Klasse einen Zeitmechanismus bietet, erfordert ihr Elapsed
-Ereignishandler eine synchrone Methodensignatur. Eine robustere und flexiblere Lösung beinhaltet eine while
-Schleife in Kombination mit Task.Delay()
:
<code class="language-csharp">public async Task ExecutePeriodicallyAsync(TimeSpan interval, CancellationToken cancellationToken) { while (!cancellationToken.IsCancellationRequested) { await MyAsyncMethod(); await Task.Delay(interval, cancellationToken); } }</code>
Dieser Code ruft MyAsyncMethod()
asynchron zum angegebenen interval
auf. Das CancellationToken
ermöglicht eine ordnungsgemäße Beendigung der Schleife.
Wichtige Überlegungen für ASP.NET:
Im Kontext von ASP.NET wird dringend davon abgeraten, diese Aufgabe einfach zu starten und zu vergessen („Fire-and-Forget“). Dies kann zu Speicherverlusten und Anwendungsinstabilität führen. Für eine zuverlässige Hintergrundaufgabenverwaltung in ASP.NET sollten Sie die folgenden Alternativen in Betracht ziehen:
Das obige ist der detaillierte Inhalt vonWie kann ich asynchrone Methoden in festgelegten Intervallen in einer C# -NEW -Anwendung ausführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!