我正在制作一个需要一些相当紧凑的时间的应用程序,而秒表类是完美的解决方案.但是,有时候我注意到,当在小型平板电脑上运行时,秒表值已经过时了.我添加了一些调试打印输出,每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;
Run Code Online (Sandbox Code Playgroud)
时间跨度为200毫秒.我的调试代码只是在Stopwatch每次dispatchTimer滴答时打印出对象的值.
UPDATE2:
一个有趣的Microsoft支持文章是性能计数器值可能意外地向前飞跃.