在C#Web應用程式中實施定期安排的非同步操作
>
挑戰:>許多C#Web應用程式都需要定期執行任務,例如將用法資料傳送到遠端服務,而不會影響使用者請求的回應能力。 這需要類似JavaScript的
函數的機制,但是在C#的非同步上下文中setInterval
方法:
類別提供定時機制時,其
事件處理程序需要同步方法簽章。 一個更健壯,更靈活的解決方案涉及Timer
> Elapsed
的迴路:while
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>
允許循環的優雅終止。 MyAsyncMethod()
>
ASP.NET的重要考量:interval
CancellationToken
在ASP.NET的上下文中,只需啟動此任務並忘記它(“燃燒”)。 這可能會導致記憶體洩漏和應用程式不穩定。 對於ASP.NET中可靠的背景任務管理,請考慮以下替代方案:>
hangfire:
專門設計和管理背景作業的流行,強大的庫。以上是如何在 C# Web 應用程式中按設定的時間間隔運行非同步方法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!