我使用SetTimer API,我看到很多这样的代码:
case WM_DESTROY:
// Destroy the timer.
KillTimer(hwnd, IDT_TIMER);
PostQuitMessage(0);
break;
我是否必须致电KillTimer,否则系统会在流程退出时自动释放资源?忘记拨打KillTimer会导致资源泄漏吗?
据我所知,如果不需要计时器,它可以被KillTimer破坏。但必须手动销毁吗?
答案 0 :(得分:8)
从HWND设置的定时器被窗口(hwnd)被破坏隐式销毁。所以不,你不必在窗口退出时清理你的计时器。
但是,在窗口关闭时清除与窗口相关的所有资源是一种很好的做法。
答案 1 :(得分:3)
Windows会在进程退出时自动销毁计时器。
但请记住(所以看来)你的计时器属于窗口,而不是进程。因此,如果您的应用程序允许在一个过程中创建和销毁这些窗口,那么您将会泄漏定时器。
明确地清理事物总是好的做法,因为否则缺乏清理可能会在以后再次引起你的反击。
答案 2 :(得分:0)
根据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