我正在制作一个需要非常紧迫的时间的应用程序,而 Stopwatch 类是完美的解决方案。但是,我有时注意到,在小型平板电脑上运行时,秒表值会偏离。我添加了一些调试打印输出,每 200 毫秒左右监控一次秒表的值:
0:00:197
0:00:502
0:00:702
...
0:03:356
0:12:93
0:13:21
0:13:421
...
它怎么可能从约 3 秒跳到约 13 秒?我现在看到底层函数 QueryPerformanceCounter() 是错误的(当心 QueryPerformanceCounter()),但我感觉到这里正在发生其他事情。
任何见解都值得赞赏。
更新:
这是我的代码的更多细节:它非常简单。这是一个 WPF 应用程序,它在启动时创建一个新Stopwatch
对象,然后通过Start()
. 然后我创建一个DispatcherTimer
,像这样:
displayTimer = new DispatcherTimer();
displayTimer.Tick += display_Tick;
displayTimer.Interval = DISPLAY_INTERVAL_TIMESPAN;
其中时间跨度为 200 ms。Stopwatch
我的调试代码只是在每次dispatchTimer
滴答声时打印出对象的值。
更新2:
一篇有趣的 Microsoft 支持文章是性能计数器值可能会意外飞跃。