加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

winapi – Windows API中有哪些定期计时器对象?

发布时间:2020-12-14 04:02:11 所属栏目:Windows 来源:网络整理
导读:在研究比.NET计时器对象提供的15 ms分辨率更好的选项时(见 https://stackoverflow.com/questions/3744032/why-are-net-timers-limited-to-15-ms-resolution),我正在研究Windows提供的不同计时器对象.我发现了以下内容: Old style Windows timer Multimedia
在研究比.NET计时器对象提供的15 ms分辨率更好的选项时(见 https://stackoverflow.com/questions/3744032/why-are-net-timers-limited-to-15-ms-resolution),我正在研究Windows提供的不同计时器对象.我发现了以下内容:

> Old style Windows timer
> Multimedia timers
> Waitable timer
> Timer queue timers
> Threadpool timers

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

解决方法

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

有关我的调查的详细信息,请参阅Why are .NET timers limited to 15 ms resolution?和http://www.informit.com/guides/content.aspx?g=dotnet&seqNum=815.

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

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

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

您可能也对Waitable Timers in .NET with C#感兴趣.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读