首頁 > 後端開發 > C++ > 如何在 ASP.NET Core 中遞歸調度非同步任務?

如何在 ASP.NET Core 中遞歸調度非同步任務?

Susan Sarandon
發布: 2025-01-26 10:56:09
原創
665 人瀏覽過

How to Recursively Schedule Async Tasks in ASP.NET Core?

在ASP.NET Core

中實現重複的異步任務 asp.net核心應用程序通常需要定期執行背景任務而不會影響用戶請求。 本文探討了一種解決反復出現的異步任務的解決方案,類似於JavaScript的

setInterval()

挑戰:

>目標是定期執行異步方法(例如,將收集的數據發送到遠程服務)而不阻止用戶交互。 困難在於適當地安排這項異步任務。

>

一個簡單的解決方案(帶有警告):

> .net's類,使用其

>事件提供了一種簡單的方法。 但是,所需的簽名(

)與Timer的方法簽名(Elapsed)。 void MethodName(object e, ElapsedEventArgs args)async>使用async Task MethodName(object e, ElapsedEventArgs args)

進行解決方案 可以使用Task.Delay()>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>在內部使用計時器:

這有效地在指定的while上執行Task.Delay()。 關鍵的添加是

,實現了優雅的任務終止,在應用程序關閉期間尤其重要。 ASP.NET核心的重要考慮因素
<code class="language-csharp">public async Task PeriodicFooAsync(TimeSpan interval, CancellationToken cancellationToken)
{
    while (!cancellationToken.IsCancellationRequested)
    {
        await FooAsync();
        await Task.Delay(interval, cancellationToken);
    }
}</code>
登入後複製

FooAsync()interval> cancellationToken>一般功能性.NET應用程序,此方法需要在ASP.NET核心內謹慎。 這種方法的“火和攻擊”性質可能會導致問題。 對於ASP.NET核心中強大的背景任務管理,請考慮諸如Hangfire之類的已建立解決方案或Stephen Cleary的“ Fire and Losed on Asp.net上”中詳細介紹的技術,以及Scott Hanselman的“如何在ASP.NET中運行背景任務”。 這些資源提供了更複雜和可靠的方法來處理ASP.NET核心環境中的長期運行或異步背景過程。

以上是如何在 ASP.NET Core 中遞歸調度非同步任務?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板