11

私はSetTimerAPI を使用していますが、次のようなコードがたくさんあります。

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

呼び出すKillTimer必要がありますか? そうしないと、システムはプロセスの終了時にリソースを自動的に解放しますか? 呼び出しを忘れるとKillTimerリソース リークが発生しますか?

タイマーが必要ない場合は、によって破棄できることを理解していますKillTimer。しかし、手動で破棄する必要がありますか?

4

3 に答える 3

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 に答える