每隔一分钟运行调度程序计时器
本文关键字:调度程序 计时器 运行 一分钟 | 更新日期: 2023-09-27 18:34:01
以下调度程序每 1 分钟运行一次,从调用其 Start() 方法的时间开始计算...但我真正需要的是它在系统时间的分钟部分的每次更改时滴答作响。知道吗?这是一个Windows应用程序(WPF)。
DispatcherTimer hourTimer = new DispatcherTimer(DispatcherPriority.Normal)
{
Interval = new TimeSpan(0, 1, 0)
};
hourTimer.Tick += (sender,e) => { renderTime(); };
hourTimer.Start();
您无法从任何使用单个线程执行时钟周期的计时器获得"节拍器质量节拍"。这是因为当需要发生即时报价时,线程可能会被阻塞。
您能做的最好的事情就是计算到下一次逐笔报价的时间,并在逐笔报价事件开始时重置持续时间。
var now = DateTime.UtcNow;
var nextMinute = now.AddTicks(-(now.Ticks%TimeSpan.TicksPerMinute)).AddMinutes(1);
DispatcherTimer hourTimer = new DispatcherTimer(DispatcherPriority.Normal)
{
Interval = nextMinute - DateTime.UtcNow
};
hourTimer.Tick += (sender, e) =>
{
var correctionNow = DateTime.UtcNow;
var timeCorrection = correctionNow.AddTicks(-(correctionNow.Ticks % TimeSpan.TicksPerMinute)).AddMinutes(1);
hourTimer.Interval = timeCorrection - DateTime.UtcNow;
renderTime();
};
hourTimer.Start();