C# windows phone调度程序精度
因此,我得到了一个应用程序(windows phone 7.5 over c#),它使用Dispatcher来模拟计时器。我已将间隔设置为1毫秒:C# windows phone调度程序精度,c#,windows-phone-7,C#,Windows Phone 7,因此,我得到了一个应用程序(windows phone 7.5 over c#),它使用Dispatcher来模拟计时器。我已将间隔设置为1毫秒: timer.Interval = new TimeSpan(0,0,0,0,1); 然后我宣布一个时间跨度,以便进行简单的倒计时: TimeSpan countdown = TimeSpan.FromSeconds(10); 在每个刻度上,im减去1毫秒: countdown = countdown.Subtract(TimeSpan.FromM
timer.Interval = new TimeSpan(0,0,0,0,1);
然后我宣布一个时间跨度,以便进行简单的倒计时:
TimeSpan countdown = TimeSpan.FromSeconds(10);
在每个刻度上,im减去1毫秒:
countdown = countdown.Subtract(TimeSpan.FromMilliseconds(1));
在Visual Studio的windows phone emulator 256/512中,它的工作“没有问题”,但当我在手机(LG Quantum)上运行它时,它似乎存在精度问题。我将它与我的PC屏幕上运行的应用程序以及它在手机上运行的速度进行了比较。我已尝试在手机中不以调试模式运行应用程序。有什么解决办法吗?或者我必须采取另一种方法?这里最好采用另一种方法:
DateTime startTime = DateTime.Now;
TimeSpan countdown = DateTime.Now - startTime;
经验告诉我,你只是想让手机硬件处理太多的事件 从MSDN: 在每个Dispatcher循环的顶部重新评估Dispatcher 计时器不保证在时间间隔发生时准确执行,但保证在时间间隔发生之前不执行 请记住,实际的手机硬件是单核的,因此尝试每秒精确捕获1000个事件并不是最好的方法
根据新的间隔增加滴答声和增量之间的时间,或者计算计时器启动的时间,并将其从每个滴答声的当前时间中减去。您到底想完成什么?计时器总是很复杂,间隔很短。我需要以毫秒为精度显示倒计时(秒:毫秒)。触发事件似乎需要一毫秒以上的时间。因此,你最好的选择是。很好的解释,我们也不得不认为windows phone在后台运行的应用程序可能没有android手机那么多,但仍然必须运行基本的手机任务。谢谢。好的,我用你的方法得到了更高的精度(这就是解决方案),但是你能解释一下为什么从TimeSpan中减去DateTime的对象比从TimeSpan中减去要好吗?因为我的解决方案不依赖于DispatchTimer的时间段。剩下的解决方案是重新调整
DispatchTimer
延迟,因此,如果一项任务被附加到触发勾号上,它或多或少会在一个准确的时间执行。你能帮我一下吗