> > C#Web開發中的一個常見挑戰涉及將累積的資料定期發送到外部服務。 為了防止阻止使用者請求,開發人員需要一種機制,以在單獨的執行緒中以固定的間隔執行非同步方法。
類別提供了定時執行的簡單方法,但其簽章與非同步方法直接相容。 一個更有效的解決方案利用循環與Timer
結合,如圖所示:while
Task.Delay
此循環以
<code class="language-csharp">public async Task PeriodicFooAsync(TimeSpan interval, CancellationToken cancellationToken) { while (!cancellationToken.IsCancellationRequested) { await FooAsync(); await Task.Delay(interval, cancellationToken); } }</code>。 包含a
對於循環的優雅終止至關重要,尤其是在ASP.NET中,不受控制的背景任務可以建立問題。
FooAsync
用於ASP.NET應用程式中的可靠背景任務管理,請考慮使用諸如Hangfire之類的專用庫或在Stephen Cleary的“ Fire and Losed on asp.net上”和Scott Hanselman等資源中概述的策略以及Scott Hanselman的「如何在ASP中運行ASP中的背景任務。網」。 這些提供了更複雜的方法來處理長期或潛在的破壞性背景過程。
以上是如何在不阻止用戶請求的情況下定期運行C#中的異步方法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!