Windows API中提供了哪些定期计时器对象?

Jim*_*hel 5 winapi timer

在研究用于获取比.NET定时器对象提供的15毫秒的分辨率更好(见选项/sf/ask/262082271/)我正在查看Windows提供的不同计时器对象.我发现了以下内容:

Windows API中是否还有其他计时器类型?

Jim*_*hel 7

我问了这个问题,因为我对实现一个定期计时器很感兴趣,这个计时器比.NET提供的计时器更精细.我对那些定时器(Windows.Forms.Timer,System.Timers.TimerSystem.Threading.Timer)的调查显示,我所希望的最好的是15毫秒粒度,精度为-1到+30毫秒.这对大多数应用程序来说都很好,但不适用于我正在处理的应用程序.

有关我的调查的详细信息,请参阅为什么.NET计时器的分辨率限制为15毫秒?http://www.informit.com/guides/content.aspx?g=dotnet&seqNum=815.

这导致我在Windows下寻找可用的定期计时器对象.我确定了我在原始问题中发布的五种类型.我没有找到任何其他人.我放弃了旧式Windows计时器,因为我不想处理消息.然后我在C#中为其他四种计时器类型编写了托管原型并进行了一些测试.

所有四种定时器类型(多媒体定时器,等待定时器,定时器队列定时器和线程池定时器)提供可靠的1 ms间隔,具有非常好的分辨率.其中,Threadpool计时器是最容易与之交互的计时器,但遗憾的是它在Windows XP上不受支持.定时器队列定时器有一系列令人眼花缭乱的选项,但如果忽略大多数选项,它们几乎就像Threadpool定时器一样简单.有关更多信息,请参阅探索更好的计时器选项.

我选择在.NET中为我的通用计时器类包装计时器队列计时器.你可以在这里看到它.

您可能也对使用C#的.NET中的Waitable Timers感兴趣.