HybridTimer
与 MmTimer
是高精度定时器的两种实现, 它们都实现了ITimer
接口,可以定义触发间隔与触发时的事件。此外,HybridTimer
还实现了IHybridTimer
接口,可以进行更多的控制,例如定义触发模式、阻塞模式以及线程优先级。
下边通过一段代码来简单测试一下高精度定时器:
首先使用 NuGet 方式通过包管理器 UI 或者命令行安装:
PM> Install-Package GKarch.Tundra.Misc
然后可以在 console 工程中使用下面代码试验(需要using GKarch.Tundra.Timers
):
var last = 0d;
var watch = new System.Diagnostics.Stopwatch(); // 用来计时
var timer = new HybridTimer(); // 混合定时器
timer.Tick = t => { // 每次触发执行的委托
var current = watch.Elapsed.TotalMilliseconds;
var delta = current - last;
last = current;
Console.Write("{0:#.00}\t", delta); // 输出本次执行与上一次执行的时间间隔
};
timer.Start();
watch.Start();
Console.ReadLine(); // 回车结束
输出结果:
10.00 10.00 10.00 10.00 10.00 10.00 10.00 10.00 10.00 10.00
10.00 10.00 10.00 10.00 10.00 10.00 10.00 10.00 10.00 10.00
10.00 10.00 10.00 10.00 10.00 10.00 10.00 10.00 10.00 10.00
10.00 10.00 10.00 10.00 10.00 10.00 10.00 10.00 10.00 10.00
10.00 10.00 10.00 10.00 10.00 10.00 10.01 9.99 10.00 10.00
10.00 10.00 10.00 10.00 10.00 10.00 10.00 10.00 10.00 10.00
10.00 10.00 10.00 10.00 10.00 10.00 10.00 10.00 10.00 10.00
10.00 10.00 10.00 10.00 10.00 10.00 10.00 10.00 10.00 10.00