是KillTimer函数有必要吗?(Is KillTimer necessary?)

2019-09-20 15:20发布

我使用的SetTimer API,我看到了很多这样的代码:

case WM_DESTROY: 
    // Destroy the timer. 
    KillTimer(hwnd, IDT_TIMER); 
    PostQuitMessage(0); 
    break; 

我必须呼吁进程退出KillTimer函数或系统将自动免费资源? 是否忘记调用KillTimer函数导致资源泄漏?

我明白,如果不需要定时器可以通过KillTimer函数被破坏。 但是,必须将其手动销毁?

Answer 1:

从HWNDs设置定时器隐含窗口(HWND)被破坏被破坏。 所以,不,你不必清理你的计时器在窗口退出。

但它是一个很好的做法,有你的所有有关在窗口关闭清理窗口资源。



Answer 2:

计时器会自动被Windows的进程退出被破坏。

但要记住,(所以才出现),您的计时器所属的窗口,而不是过程。 所以,如果您的应用程序允许创建和销毁这些窗口的过程中,你会被泄露定时器。

它总是明确地清理东西,否则缺乏清理可以回来以后咬你很好的做法。



Answer 3:

根据MSDN,一个应该杀定时器:

应用程序应使用KillTimer函数功能销毁不再需要定时器。 下面的示例破坏由常量IDT_TIMER1,IDT_TIMER2和IDT_TIMER3识别的计时器。

//摧毁计时器。
KillTimer函数(HWND,IDT_TIMER1);
KillTimer函数(HWND,IDT_TIMER2);
KillTimer函数(HWND,IDT_TIMER3);

https://msdn.microsoft.com/en-us/library/windows/desktop/ms644901(v=vs.85).aspx#creating_timer



文章来源: Is KillTimer necessary?