来自 MSDN:
The 取消等待定时器 http://msdn.microsoft.com/en-us/library/ms681985.aspx函数不会改变定时器的信号状态。它会在定时器设置为有信号状态之前停止定时器并取消未完成的 APC。因此,对计时器执行等待操作的线程将保持等待状态,直到超时或重新激活计时器并将其状态设置为有信号。如果计时器已处于有信号状态,则它将保持该状态。
(强调我的)
那么:如果我无法调用 CancelWaitableTimer,如何将手动重置可等待计时器设置为无信号状态? ResetEvent 不适用于可等待计时器(它会因 ERROR_INVALID_HANDLE 而失败)。
我不想使用 SetWaitableTimer,因为(此时)我不知道将其设置为多长时间。我想我可以将延迟设置为一个很大的数字,但这对我来说感觉有点麻烦。
你能用一些永远不会发生的非常长的时间来调用 SetWaitableTimer 吗?知道真实时间后再次调用。
Update: 无论是否破解,文档都非常清楚,m-r 可等待计时器“保持在有信号状态,直到调用 SetWaitableTimer”。在我看来,这就是您必须使用的功能。你只需要有一个名为“RESET_TIMER”的好常量,它被设置为-2^63 或其他值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)