我使用SetTimer
API,我看到很多这样的代码:
case WM_DESTROY:
// Destroy the timer.
KillTimer(hwnd, IDT_TIMER);
PostQuitMessage(0);
break;
我必须调用KillTimer
还是系统会在进程退出时自动释放资源?忘记调用KillTimer
会导致资源泄漏吗?
我知道如果不需要计时器,它可以被KillTimer
. 但是必须手动销毁吗?
我使用SetTimer
API,我看到很多这样的代码:
case WM_DESTROY:
// Destroy the timer.
KillTimer(hwnd, IDT_TIMER);
PostQuitMessage(0);
break;
我必须调用KillTimer
还是系统会在进程退出时自动释放资源?忘记调用KillTimer
会导致资源泄漏吗?
我知道如果不需要计时器,它可以被KillTimer
. 但是必须手动销毁吗?
从 s 设置的计时器被正在销毁HWND
的窗口 ( hwnd
) 隐式销毁。所以不,你不必在窗口退出时清理你的计时器。
但是,在关闭窗口时清理所有与窗口相关的资源是一个好习惯。
计时器将在进程退出时由 Windows 自动销毁。
但请记住(看起来)您的计时器属于窗口,而不是进程。因此,如果您的应用程序允许在进程中创建和销毁这些窗口,您将泄漏计时器。
明确地清理东西总是很好的做法,因为否则清理的缺乏可能会在以后再次咬你。
根据 MSDN,应该杀死计时器:
应用程序应该使用该
KillTimer
函数来销毁不再需要的计时器。以下示例销毁由常量IDT_TIMER1
、IDT_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