定时器速度问题WPF

本文关键字:WPF 问题 速度 定时器 | 更新日期: 2023-09-27 17:54:03

我使用计时器滚动列表。每隔一毫秒,我就启动Tick事件。事件虽然动画看起来很慢。

 repeatTimer_Tick(this, new EventArgs());
        repeatLeftTimer.Interval = TimeSpan.FromMilliseconds(1);
        repeatLeftTimer.Tick += new EventHandler(repeatTimer_Tick);

定时器速度问题WPF

windows中的计时器的分辨率为几毫秒,IIRC,介于10到50毫秒之间。你不能让普通计时器每毫秒滴答一次。

我会尝试使用动画来说明你正在做的事情。

. net定时器类的最小间隔通常为15.6 ms。如果您需要更快的增量(低至1ms), Windows在非托管API中提供了多媒体计时器。你可以导入这个计时器并使用它——我已经这样做了,它工作了。

我基于这个代码:http://www.codeproject.com/KB/miscctrl/lescsmultimediatimer.aspx

应该是你最需要的;我添加了一些代码来查看高分辨率计时器并观察刻度之间的时间——我能够将其设置为1ms, += 0.10 ms

您有两个很好的(相对)简单的选择:

  1. 使用动画- WPF有一个非常通用的动画系统,很可能能够做你需要的。

  2. 使用compostiontarget。渲染事件,这些被尽可能快地调用(每一帧),你负责在每次调用中基于当前时间设置当前状态(这就是内置动画的工作方式)

如果您需要高分辨率,那么我建议查看Stopwatch类。使用Frequency字段和ElapsedTicks属性来获得您正在寻找的分辨率。但请注意,秒表的分辨率将根据硬件而变化。请阅读msdn文档的链接以获取更多信息。