`Timer`组件不够准确,有替代方案吗?

时间:2012-05-15 17:10:30

标签: c# winforms visual-studio-2008

我需要每0.03125秒发生一次事件 Timer控件只能达到0.031 s

如何从Stopwatch组件创建更准确的事件?

5 个答案:

答案 0 :(得分:3)

我发现这一点,它比标准计时器更加准确可靠!我不敢相信。

http://www.codeproject.com/Articles/5501/The-Multimedia-Timer-for-the-NET-Framework

引用: Win32多媒体定时器服务提供最大程度的定时准确性。它们允许您以比其他计时器服务更高的分辨率安排计时事件。这在多媒体应用中非常有用,其中定时精度是最重要的。例如,MIDI应用程序需要尽可能精细的计时事件。

不幸的是,Win32多媒体计时器不是.NET Framework的一部分。但是,通过使用.NET互操作性服务,多媒体计时器可以进入.NET折叠。

答案 1 :(得分:2)

Windows不是实时操作系统 - 因此您无法获得在特定时间后执行方法的保证。

你可以做的最好的事情是经常等待检查时间(可能是使用秒表)。

您也可以使用分辨率更高的多媒体计时器...(搜索查询 - c# multimedia timers,即Getting accurate ticks from a timer in C#

答案 2 :(得分:2)

一般来说,定时器只能在15毫秒内准确到达,即使这样,也往往会出现准确性问题,因为它们通常会被抢先一步。

如果计时器的精度指定在四分之一毫秒范围内,则需要一个实时操作系统,无论使用哪个计时器,都可能无法正常工作。

答案 3 :(得分:2)

'我需要每隔0.03125 s发生一次事件 - 为了可靠地实现这种精度,请使用专用的微控制器。

您无法在桌面操作系统上实现您所需的功能。

答案 4 :(得分:1)

高优先级线程和循环与chek秒表时间或更准确的计数器怎么样?