Terminar hilos

09/07/2004 - 13:27 por Sergio | Informe spam
Como se puede acabar con un hilo desde fuera de el?

Quiero que si el usuario cierra mi aplicación, al salir se pare la
ejecución de todos los hilos que tengo abiertos, en principio va a ser
1, pero igual necesito alguno más.
Además tb me gustaria como cerrar aplicaciones que haya abierto el hilo
con ShellExecuteEx()
 

Leer las respuestas

#1 Eduard Tomàs
13/07/2004 - 20:10 | Informe spam
Buenas...

Como creas los hilos??
Si los creas con CreateThread, esta función te devuelve
un HANDLE que siempre puedas usar con TerminateThread
para cargarte el hilo.
Ojo, que usar TerminateThread para cargarte hilos no es
la mejor manera ya que el hilo es "fulminado" sin darle
tiempo a liberar sus recursos (ficheros, semáforos, mutex
y demás).
Otra solución menos drástica es indicar al hilo que el
mismo se termine. Si el hilo tiene un procedimiento de
ventana siempre puedes mandarle un mensaje (usa
SendTimeoutMessage para no quedarte colgado si el
hilo "se ha muerto") para que se termine. Ten siempre
presente que la mejor manera de terminar un hilo es
llamar a ExitThread desde el propio hilo.

Sobre lo de ShellExecuteEx, esta función te deja en el
miembro hProcess de la estructura SHELLEXECUTEINFO que se
le pasa como parámetro el HANDLE al proceso creado. Con
este HANDLE siempre puedes usar TerminateProcess para
cargarte el proceso (ocurre lo mismo que los threads) o
bien usar WaitForSingleObject o alguna función de este
estilo para sincronizarte con este proceso y esperar a
que termine.

Saludos,
edu


Como se puede acabar con un hilo desde fuera de el?

Quiero que si el usuario cierra mi aplicación, al salir


se pare la
ejecución de todos los hilos que tengo abiertos, en


principio va a ser
1, pero igual necesito alguno más.
Además tb me gustaria como cerrar aplicaciones que haya


abierto el hilo
con ShellExecuteEx()
.

Preguntas similares