1

我正在为 WP7 编写一个录音应用程序。我的 ViewModel 类中有一个 DispatcherTimer 对象,当录制发生时,它会计算经过的秒数以向用户显示录制的长度。我的应用程序有以下问题:

DispatcherTimer 的刻度间隔设置为一秒 (1000) 毫秒。

当我按下启动按钮时,DispatcherTimer 启动。当我按下停止按钮时, DispatcherTimers 线程退出。(马上!,以为我不打算那样))

如果我在快速按下停止后按下启动按钮(中间不到一秒),我的 DispatcherTimer 将无法再次启动,因为它还没有停止。(它的线程还没有退出)

基本上,我最关心的是为什么 DispatcherTimer 必须等到它的滴答时间,才能意识到它已经停止,并且它创建的执行滴答的线程必须退出?

我该如何解决这个问题?谢谢你。

4

1 回答 1

1

DispatcherTimers 不能保证在时间间隔发生时准确执行,但可以保证在时间间隔发生之前不会执行。这是因为 DispatcherTimer 操作像其他操作一样放置在 DispatcherTimer 队列中。DispatcherTimer 操作何时执行取决于队列中的其他作业及其优先级。

参考: http: //msdn.microsoft.com/en-us/library/system.windows.threading.dispatchertimer (v=VS.95).aspx

您最好使用 a System.Threading.Timer,它是一个在单独线程上触发的计时器类。这对于纯数字计时很有用,您不尝试更新 UI 等。

于 2011-08-10T16:22:23.320 回答