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

在里面Doing,我等待一個任務1:

問題在于TimeSpan.FromSeconds(0.5))將ExecuteAsync創建一個新的Doing()而不等待我的任務完成。
控制臺結果:

我該如何解決這個問題?或者有沒有辦法通過等待任務完成來實作后臺任務?
uj5u.com熱心網友回復:
不要使用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 檔案中的示例。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/438710.html
