gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 14:35:24 24 4
gpt4 key购买 nike

在研究获得优于 .NET 计时器对象提供的 15 毫秒分辨率的选项时(参见 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.TimerSystem.Timers.TimerSystem.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# 为其他四种计时器类型编写了托管原型(prototype)并进行了一些测试。

    所有四种计时器类型(多媒体计时器、等待计时器、计时器队列计时器和线程池计时器)都提供了可靠的 1 毫秒间隔,并且分辨率非常好。其中,Threadpool 计时器是迄今为止最容易与之交互的,但不幸的是它在 Windows XP 上不受支持。定时器队列定时器有一系列令人眼花缭乱的选项,但如果你忽略大多数选项,它们几乎和线程池定时器一样简单。见 Exploring options for better timers了解更多信息。

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

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

    关于winapi - Windows API 中提供了哪些定期计时器对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3763544/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com