KillTimer真的有必要吗?

时间:2011-12-04 05:01:10

标签: winapi timer

Is KillTimer necessary?这似乎是一个重复的问题,但我想用可信来源来证实这一点。

破坏窗口是否真的释放了操作系统为计时器分配的资源? (如果这样的函数确实存在,DestroyWindowsTimers真的被调用吗?如果是的话,在哪里?)

2 个答案:

答案 0 :(得分:6)

不,没有必要。来自DestroyWindow的文档(重点已添加):

  

该功能会向窗口发送WM_DESTROYWM_NCDESTROY条消息以停用它并从中移除键盘焦点。该功能还会破坏窗口的菜单,刷新线程消息队列,销毁计时器,删除剪贴板所有权,并中断剪贴板查看器链(如果窗口位于查看器链的顶部) )。

答案 1 :(得分:2)

进行谷歌搜索唯一真正的实际参考它看起来是一些Win2k源代码。网址以/Censorship/win2k_sources/private/.../timers.c结尾,我假设从source code leak开始。我没有查看代码,也不会在这里发布链接。

该函数很可能存在 - 对于链接到窗口句柄的计时器几乎必须存在 - 因为计时器消息被传递到特定的窗口句柄。

我无法在文档中看到任何声明您不必调用KillTimer来摆脱计时器的内容。因此,根据记录的合同,您需要致电KillTimer。在实践中,Windows可能会为您清理它,但由于这是未记录的行为,您应该编写代码以遵循记录的行为并在所有计时器上调用KillTimer