【问题标题】:Can I tell when a waitable timer will fire by its handle?我可以通过句柄判断等待计时器何时触发吗?
【发布时间】:2012-07-02 14:17:45
【问题描述】:

假设我使用CreateWaitableTimer API 创建了一个可等待计时器,然后使用 SetWaitableTimer 设置它。我能否仅通过第一个 API 返回的 HANDLE 确定该计时器何时触发?

【问题讨论】:

    标签: c++ windows winapi timer


    【解决方案1】:

    不,你不能。

    但是没有什么能阻止您创建一个将发布类似 API 的包装器对象,记录目标时间(通过将到期时间添加到调用 SetWaitableTimer 的当前时间),并为您提供未完成时间作为调用查询方法的当前时间与目标时间之间的差异。

    【讨论】:

    • 好的,谢谢。这就是我现在正在做的事情,但我观察到如果系统时间发生变化(例如,由于每日时间调整,或者更平凡,由管理员用户手动),计时器的触发时间显然与我设置的时间不同因为系统时间已调整,而我的“包装”日期时间变量没有反映这种变化。这就是为什么我想直接从计时器句柄中获取时间。
    • @ahmd0 - 如果您实施规则,例如“如果触发时间少于 1 分钟,则等待,否则只需取消计时器”,您可以通过创建两个计时器来做到这一点,其中一个在主炮前 1 分钟开火。这将随着系统时间的变化而正常运行。
    • 是的,这是一个不错的解决方案。虽然复杂的一个:(我只是在寻找一个简单的解决方法......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多