簡體   English   中英

在 System.Threading.Timer 回調中等待

[英]Await inside System.Threading.Timer callback

我正在做一個 ASP.NET Web API 並且有這樣的BackgroundService

在此處輸入圖像描述

Doing中,我等待任務 1:

在此處輸入圖像描述

問題在於TimeSpan.FromSeconds(0.5)) ExecuteAsync會創建一個新的Doing()而無需等待我的任務完成。

控制台結果:

在此處輸入圖像描述

我該如何解決這個問題? 或者有沒有辦法通過等待任務完成來實現后台任務?

不要使用Timer 而是設置一個loop並在等待期間使用Task.Delay

protected override async Task ExecuteAsync(CancellationToken cancellationToken)
{
    var delay = TimeSpan.FromSeconds(0.5);
    
    while (!cancellationToken.IsCancellationRequested)
    {                            
        await Doing();
        await Task.Delay(delay, cancellationToken);
    }
}

請參閱Microsoft 文檔中的示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM