11

我使用SetTimerAPI,我看到很多这样的代码:

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

我必须调用KillTimer还是系统会在进程退出时自动释放资源?忘记调用KillTimer会导致资源泄漏吗?

我知道如果不需要计时器,它可以被KillTimer. 但是必须手动销毁吗?

4

3 回答 3

11

从 s 设置的计时器被正在销毁HWND的窗口 ( hwnd) 隐式销毁。所以不,你不必在窗口退出时清理你的计时器。

但是,在关闭窗口时清理所有与窗口相关的资源是一个好习惯。

于 2009-07-28T08:14:39.543 回答
5

计时器将在进程退出时由 Windows 自动销毁。

但请记住(看起来)您的计时器属于窗口,而不是进程。因此,如果您的应用程序允许在进程中创建和销毁这些窗口,您将泄漏计时器。

明确地清理东西总是很好的做法,因为否则清理的缺乏可能会在以后再次咬你。

于 2009-07-24T11:47:35.613 回答
0

根据 MSDN,应该杀死计时器:

应用程序应该使用该KillTimer函数来销毁不再需要的计时器。以下示例销毁由常量IDT_TIMER1IDT_TIMER2和标识的计时器IDT_TIMER3

// Destroy the timers.
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

于 2015-05-13T11:54:20.533 回答