2011-12-04 25 views
5

To może wydawać się duplikatem pytanie dla Is KillTimer necessary?, ale chciałbym potwierdzić to z wiarygodne źródło.Czy KillTimer jest naprawdę potrzebny?

Czy niszczenie okna naprawdę uwalnia zasoby przydzielone przez system operacyjny dla timera? (czy DestroyWindowsTimers naprawdę się nazywa, nie mówiąc już o tym, czy taka funkcja rzeczywiście istnieje? jeśli tak, to gdzie?)

Odpowiedz

6

Nie, to nie jest konieczne. Z dokumentacji DestroyWindow (z podkreślenie dodane):

Funkcja wysyła WM_DESTROY i WM_NCDESTROY wiadomości do okna, aby ją wyłączyć i wyjąć z niego skupienie klawiatury. Funkcja również niszczy menu okna, opróżnia kolejkę komunikatów wątku, niszczy liczniki czasu, usuwa własność schowka i przerywa łańcuch przeglądarki schowka (jeśli okno znajduje się u góry łańcucha przeglądarki).

2

Wykonywanie wyszukiwania google Jedynym faktycznym wyglądającym odnośnikiem do niego wyglądało trochę kodu źródłowego Win2k. Url zakończył się /Censorship/win2k_sources/private/.../timers.c, zakładam od source code leak chwilę temu. Nie patrzyłem na kod, ani nie zamieszczam tutaj linku.

Ta funkcja najprawdopodobniej istnieje - coś takiego musi istnieć dla timerów powiązanych z uchwytami okiennymi - ponieważ komunikat timera jest dostarczany do określonego uchwytu okna.

Nie widzę nigdzie w dokumentacji, która mówi, że nie trzeba dzwonić pod numer KillTimer, aby pozbyć się licznika czasu. W oparciu o udokumentowaną umowę musisz zadzwonić pod numer KillTimer. W praktyce Windows prawdopodobnie to dla ciebie oczyści, ale ponieważ jest to nieudokumentowane zachowanie, powinieneś napisać swój kod, aby śledzić udokumentowane zachowanie i zadzwonić pod numer KillTimer na wszystkie zegary.

Powiązane problemy