2011-12-04 21 views
5

Esto puede parecer una pregunta duplicada para Is KillTimer necessary?, pero me gustaría confirmar esto con fuente creíble.¿Es realmente necesario KillTimer?

¿La ventana de destrucción realmente libera el recurso asignado por el sistema operativo para el temporizador? (¿DestroyWindowsTimers realmente se llama, y ​​mucho menos si tal función realmente existe? en caso afirmativo, ¿dónde?)

Respuesta

6

No, no es necesario. A partir de la documentación de DestroyWindow (con énfasis añadido):

La función envía WM_DESTROY y WM_NCDESTROY mensajes a la ventana para desactivarlo y retire el foco del teclado de la misma. La función también destruye el menú de la ventana, vacía la cola de mensajes del hilo, destruye los temporizadores, elimina la propiedad del portapapeles y rompe la cadena del visor del portapapeles (si la ventana está en la parte superior de la cadena del visor).

2

Hacer una búsqueda en google la única referencia real de aspecto real que parecía ser algún código fuente de Win2k. La url terminó con /Censorship/win2k_sources/private/.../timers.c, estoy asumiendo desde el source code leak hace un tiempo. No miré el código, ni publicaré un enlace aquí.

Probablemente exista esa función, algo así debe existir para los temporizadores vinculados a los identificadores de ventanas, ya que el mensaje del temporizador se entrega a un manejador de ventana específico.

No puedo ver nada en la documentación que indique que no tiene que llamar al KillTimer para deshacerse de un temporizador. Por lo tanto, según el contrato documentado, debe llamar al KillTimer. En la práctica, Windows probablemente lo limpiará por usted, pero dado que se trata de un comportamiento no documentado, debe escribir su código para seguir el comportamiento documentado y llamar al KillTimer en todos sus temporizadores.

Cuestiones relacionadas