KillTimer是否必要?

Ser*_*bry 7 windows winapi timer resource-leak

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

case WM_DESTROY: 
    // Destroy the timer. 
    KillTimer(hwnd, IDT_TIMER); 
    PostQuitMessage(0); 
    break; 
Run Code Online (Sandbox Code Playgroud)

我是否必须调用KillTimer,否则系统会自动释放进程退出的资源?忘记拨打KillTimer会导致资源泄漏吗?

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

sel*_*bie 9

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

但是,在窗口关闭时清除与窗口相关的所有资源是一种很好的做法.


Ric*_*dle 5

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

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

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

  • @selbie:是的,我确定你是对的。但我仍然说,除非你明确地清理它们,否则假设事情会泄漏是一种很好的做法。想象一下,您从基于窗口的计时器更改为基于回调的计时器 - 那么除非您明确杀死它们,否则您将发生泄漏。 (4认同)