所以,我使用DispatcherTimer来模拟计时器,得到了一个应用程序(Windows Phone 7.5 over c#)。我已将间隔设置为1毫秒:
timer.Interval = new TimeSpan(0,0,0,0,1);
然后我宣布TimeSpan以进行简单的倒计时:
TimeSpan countdown = TimeSpan.FromSeconds(10);
在每个刻度上im substracting 1毫秒:
countdown = countdown.Subtract(TimeSpan.FromMilliseconds(1));
在Visual Studio的Windows手机模拟器256/512中它处理“没问题”,但是当我在手机上运行它(LG Quantum)时,它似乎有精确问题。我将它与运行应用程序的PC屏幕进行了比较,并且在手机上的速度较慢。我试图不在我的手机中以调试模式运行应用程序。这有什么解决方案吗?或者我必须采取另一种方法?
答案 0 :(得分:6)
这里采用不同的方法会更好:
记录启动计时器的当前时间
DateTime startTime = DateTime.Now;
每次计时器滴答时,重新计算倒计时
TimeSpan countdown = DateTime.Now - startTime;
答案 1 :(得分:3)
经验告诉我,你只是试图为电话硬件解决太多事件。
来自MSDN:
DispatcherTimer在每个DispatcherTimer循环的顶部重新评估。
定时器不能保证在时间间隔发生时准确执行,但保证在时间间隔发生之前不执行。
请记住,实际的手机硬件是单核心,因此尝试每秒精确捕获1000个事件并不是最佳方法。
根据新的间隔增加刻度和增量之间的时间,或者计时器启动时间,并从每个刻度的当前时间减去它。