我正在为WP7编写一个音频录制应用程序。在我的ViewModel类中有一个DispatcherTimer对象,当记录发生时,它计算经过的秒数以向用户显示记录的长度。我对这个应用程序有以下问题:
DispatcherTimer的计时间隔设置为一秒(1000)毫秒。
当我按下start按钮时,DispatcherTimer启动。当我按下停止按钮时,DispatcherTimers线程退出。(稍等片刻,我想我不是故意的)
如果我在快速按下stop后按下了start按钮(间隔时间不到一秒),我的DispatcherTimer就无法再次启动,因为它还没有停止。(它的线程尚未退出)
基本上,我最关心的是为什么DispatcherTimer必须等到它的滴答时间到了,才意识到它已经停止,并且它创建的用于执行滴答的线程必须退出?
我该如何解决这个问题呢?谢谢。
发布于 2011-08-11 00:22:23
不能保证DispatcherTimers在时间间隔发生时准确执行,但保证它们不会在时间间隔发生之前执行。这是因为DispatcherTimer操作和其他操作一样被放在DispatcherTimer队列中。何时执行DispatcherTimer操作取决于队列中的其他作业及其优先级。
参考:http://msdn.microsoft.com/en-us/library/system.windows.threading.dispatchertimer(v=VS.95).aspx
最好使用System.Threading.Timer,它是一个在单独线程上触发的timer类。这对于纯粹的数字计时是很好的,在这种情况下你不需要更新UI,等等。
https://stackoverflow.com/questions/7014166
复制相似问题