Home [C# 筆記].Net6 新定时器 PeriodicTimer (異步化的定時器)
Post
Cancel

[C# 筆記].Net6 新定时器 PeriodicTimer (異步化的定時器)

在.NET 6中引入了新TimerSystem.Threading.PeriodicTimer,它和之前的Timer相比,最大的區別就是新的PeriodicTimer事件處理可以方便地使用異步,消除使用callback機制減少使用複雜度。

1
2
3
4
5
using PeriodicTimer timer = new(TimeSpan.FromSeconds(2));
while (await timer.WaitForNextTickAsync())
{
    Console.WriteLine(DateTime.UtcNow);
}

與Timer的區別

  1. 消除了回呼,不再需要綁定事件

  2. 不會發生重入,只允許有一個消費者,不允許同一個 PeriodicTimer 在不同的地方同時 WaitForNextTickAsync ,不需要自己做排他鎖來實現不能重入

  3. 非同步化,之前的幾個 timercallback 都是同步的,使用新的 timer 我們可以更好的使用非同步方法,避免寫 Sync over Async 之類的程式碼

.Net6 新特性 - PeriodicTimer - 异步化的定时器
[C#] .Net6新定时器PeriodicTimer

This post is licensed under CC BY 4.0 by the author.

[C# 筆記] 練習:串接API + Telegram Bot 發送訊息 + 每隔一段時間自動執行(PeriodicTimer定時器)

[C# 筆記][UnitTest] 單元測試簡單的 HelloWorld