首頁 > 後端開發 > C++ > 如何在 C# 中定期運行非同步方法?

如何在 C# 中定期運行非同步方法?

Barbara Streisand
發布: 2025-01-26 11:01:09
原創
424 人瀏覽過

How Can I Run Asynchronous Methods at Regular Intervals in C#?

C#中定期執行異步方法

本文提供了一種使用異步方法和while循環,定期從C# Web應用程序發布數據到服務的解決方案。

Timer類的局限性

通常用於計劃任務的Timer類,接受簽名為void MethodName(object e, ElapsedEventArgs args)的方法。當嘗試執行調用Web服務的異步方法時,這會帶來限制。

異步任務循環

為了克服此限制,可以使用while循環結合Task.Delay

<code class="language-csharp">public async Task PeriodicFooAsync(TimeSpan interval, CancellationToken cancellationToken)
{
    while (!cancellationToken.IsCancellationRequested) // 使用CancellationToken改进
    {
        await FooAsync();
        await Task.Delay(interval, cancellationToken);
    }
}</code>
登入後複製

此循環將定期執行FooAsync方法,並使用指定的間隔和提供的取消令牌。可以通過從Web應用程序傳遞取消令牌來隨時停止循環。

其他注意事項

對於ASP.NET應用程序,避免可能影響應用程序性能的“啟動並忘記”操作至關重要。為了確保可靠的後台任務,請考慮使用專用服務或工具,例如HangFire或Quartz.Net。 這將確保任務在應用程序的正常運行之外進行管理,避免資源衝突。

以上是如何在 C# 中定期運行非同步方法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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