我正在使用计时器滚动列表。每隔毫秒我就会启动Tick事件。事件虽然动画看起来很慢。
repeatTimer_Tick(this, new EventArgs());
repeatLeftTimer.Interval = TimeSpan.FromMilliseconds(1);
repeatLeftTimer.Tick += new EventHandler(repeatTimer_Tick);
答案 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)
你有两个好的和(相对)简单的选择:
使用动画 - WPF拥有一个非常多功能的动画系统,很可能能够满足您的需求。
使用CompositionTarget.Rendering事件,尽可能快地调用它们(每个帧),并且您在每次调用中负责根据当前时间设置当前状态(即内置动画的工作方式)
答案 3 :(得分:0)
如果您需要高分辨率,我建议您查看Stopwatch课程。使用“频率”字段和“ElapsedTicks”属性可获取您要查找的分辨率。请注意,秒表的分辨率将根据硬件而变化。有关更多信息,请阅读msdn文档的链接。