为什么要从定时器回调中终止定时器?

Why kill a timer from within the timer callback?

Raymondexample关于如何使用SetTimer区分单击和双击,他在定时器回调函数中调用了KillTimer。我不清楚为什么有必要这样做。回调正在发生的事实是否意味着计时器已到达其终点?

计时器以指定的频率重复触发。如果您希望他们停止开火,您必须致电 KillTimer

所以一个经典的用法是创建一个定时器,然后在它第一次触发时杀死它。这就是所谓的一次性计时器。

奇怪的是,SetTimer 的文档没有记录其行为。行为是调用安装一个自动重复计时器。

但是,您会在 timer operations 下找到以下内容:

Whenever the time-out value for the timer elapses, the system posts a WM_TIMER message to the window associated with the timer.

此 API 不立即支持一次性计时器。要实现一次性计时器,您必须在处理第一条 WM_TIMER 消息时调用 KillTimer