(使用WPF)

在我编写的一个小应用程序中,我使用了一些倒数计时器。
为此,我使用了DispatcherTimer

counter01 = new DispatcherTimer();
counter01.Tick += new EventHandler(counter01_Tick);
counter01.Interval = new TimeSpan(0, 0, 1);


但是现在,当我测试/使用该程序时,我已经注意到,将其设置为(例如)倒计时60分钟时,与实际时间相比,它会减少几分钟。

难道是由于某种原因,如果像我上面那样使用DispatcherTimer时,它并不总是精确地为1秒?

最佳答案

这样的计时器永远不会绝对精确。毕竟,它必须在调度程序线程上运行-如果调度程序同时忙于处理其他某个线程,您会期望发生什么?

它可能足够接近以每秒大约一次的速度滴答作响-您应该只取当前时间,然后从“目标”时间中减去该时间(或使用Stopwatch)来获得相当准确的倒计时仅计算计时器已滴答的次数。

10-06 06:45