定时器速度问题WPF

时间:2011-05-02 09:20:00

标签: c# wpf timer

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

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

4 个答案:

答案 0 :(得分:2)

Windows中的定时器具有几毫秒的分辨率,IIRC,介于10到50毫秒之间。你不能让普通的计时器每毫秒都能打勾。

答案 1 :(得分:2)

我会尝试使用动画制作你正在做的事情。

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

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

应该是您需要的大部分内容;我添加了一些代码来查看高分辨率计时器并观察刻度之间的时间 - 我能够达到1ms,+ = 0.10 ms

答案 2 :(得分:0)

你有两个好的和(相对)简单的选择:

  1. 使用动画 - WPF拥有一个非常多功能的动画系统,很可能能够满足您的需求。

  2. 使用CompositionTarget.Rendering事件,尽可能快地调用它们(每个帧),并且您在每次调用中负责根据当前时间设置当前状态(即内置动画的工作方式)

答案 3 :(得分:0)

如果您需要高分辨率,我建议您查看Stopwatch课程。使用“频率”字段和“ElapsedTicks”属性可获取您要查找的分辨率。请注意,秒表的分辨率将根据硬件而变化。有关更多信息,请阅读msdn文档的链接。