我正在尝试创建一个以100 Hz记录加速度计数据的Windows Phone应用程序。我试用了System.Windows.Threading.DispatcherTimer
和System.Threading.Timer
,但是查看记录的数据,实际上都没有以100 Hz的速度进行录制。 DispatcherTimer
记录60-80赫兹,而Timer
记录大约85-90赫兹。我不认为问题是手机无法处理它,因为当我尝试以50赫兹录音时,它仍然落后于只有40+赫兹。以下是我的代码片段:
DispatcherTimer
:
timer = new DispatcherTimer();
timer.Interval = TimeSpan.FromMilliseconds(10);
timer.Tick += new EventHandler(timer_Tick);
Timer
:
timer = new Timer(timer_Tick, null, 0, 10);
如何确保以固定的速率间隔进行录制?
答案 0 :(得分:1)
Windows Phone 7 - 不是real-time OS。没有一个计时器类是完全精确的。所有你这样做,说你想等至少这么久。一切都需要花费一些时间才能触发,并且一旦操作系统到达实际服务于滴答消息,您最终会通知计时器已经勾选。
尝试实现简单测试:每10毫秒打印当前时间,您可以看到最小错误。当开发人员使用1
或5
或10
秒等间隔时 - 这是不明显的。