首頁 >後端開發 >C++ >如何在不阻止用戶請求的情況下定期運行C#中的異步方法?

如何在不阻止用戶請求的情況下定期運行C#中的異步方法?

Susan Sarandon
Susan Sarandon原創
2025-01-26 11:16:10452瀏覽

How to Regularly Run Asynchronous Methods in C# without Blocking User Requests?

在C#Web應用程式中實施定期安排的非同步操作

> > 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn