.net 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周期:
将每个任务执行时间调整到2s,查看输出:
2. 执行周期大于Timer周期:
将每个任务执行时间调整到5s,查看输出:
通过这两个例子,可以总结出:
当任务执行时间小于周期时,下次触发的时间是上次触发时间+周期 当任务执行时间大于周期时,下次立即触发这个周期策略可以说时非常实用了,后续就用 PeriodicTimer 代替循环调用 Task.Delay了 。
到此这篇关于 .Net 6 中的 PeriodTimer 介绍的文章就介绍到这了,更多相关.Net 6中的PeriodTimer内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
查看更多关于.Net 6中的PeriodTimer介绍的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did19731