1. 程式人生 > 程式設計 >.Net 6中的PeriodTimer介紹

.Net 6中的PeriodTimer介紹

.newww.cppcns.comt 6中新增了一個非同步計時器PeroidTimer,相對普通Timer的回撥, 它的模型更簡單。

var    second = TimeSpan.FromSeconds(3);
using var timer = new PeriodicTimer(second);

while (await timer.WaitForNextTickAsync())
{
  Console.WriteLine($"Tick {DateTime.Now}");
}

關於WaitForNextTickAsync的處理策略,MSDN有點語焉不詳,我以前面程式碼中這個週期為3s的Timer為例,

簡單測了下:

1. 執行時間小於Timer週期:

將每個任務XgmkBR執行時間調整到2s,檢視輸出:

Tick 2022/1/7 11:30:58
Tick 2022/1/7 11:31:01
Tick 2022/1/7 11:31:04

2. 執行週期大於Timer週期:

將每個XgmkBR任務執行時間調整到5s,檢視輸出:

Tick 2022/1/7 11:33:08
&http://www.cppcns.comnbsp; Tick 2022/1/7 11:33:13
Tick 2022/1/7 11:33:18
Tick 2022/1/7 11:33:23

通過這兩個例子,可以總結出:

  • 當任務執行時間小於週期時,下次觸發的時間是上次觸發時間+週期
  • 當任務執行時間大於週期時,下次立即觸發

這個週期策略可以說時非常實用了,後續就用PeriodicTimer代替迴圈呼叫Task.Delay了

到此這篇關於.Net 6中的PeriodTimer介紹的文章就介紹到這www.cppcns.com了,更多相關.Net 6中的PeriodTimer內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!