Detener Thread

21/02/2007 - 21:18 por Lazarte Federico | Informe spam
Estimados
Inicio un thread de la manera en un boton llamado "comenzar"

Thread oThread = new Thread(new ThreadStart(CargarArchivos));
oThread.Start();

ahora bien en un boton "detener" necesito poner codigo para detener
ese hilo, alguien sabe como se hace? desde el boton detener no tengo
acceso a metodos o propiedades del objeto oThread.
Muchas gracias.
Federico Lazarte

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
21/02/2007 - 22:58 | Informe spam
"Lazarte Federico" wrote in message
news:
Mostrar la cita
Bien, lo primero que necesitas es trasladar la variable oThread a una
ubicación que sea accesible desde el botón Detener. Una vez hecho eso,
detienes el thread mediante:

oThread.Interrupt();

Eso te genera una excepción dentro del thread del tipo
ThreadInterruptedException, que puedes interceptar ejecutando todo el código
del thread dentro de un try...catch.
#2 Lazarte Federico
22/02/2007 - 14:23 | Informe spam
On Feb 21, 6:58 pm, "Alberto Poblacion" <earthling-
wrote:
Mostrar la cita
Gracias por tu respuesta, aun asi no logro que finalize, pues sigue
ejecutando el metodo. Este metodo lo que hace es escanear un
directorio, al presioanr el boton detener, sigue como si nada pasara.
Que puede estar fallando?.
Gracias.
#3 RFOG
22/02/2007 - 15:29 | Informe spam
La solución "políticamente incorrecta" (y sin necesidad de que el botón
conozca el thread) es la de tener una variable en la clase que marque la
condición de finalización del hilo.

Alg así:

desde la ficha principal:

m_bTerminateThread=true;

y en el hilo:
while(!m_bTerminateThread)
{
... //dar caña
}

Yo también he tendio ese problema que comentas, en su momento lo solucioné
como te digo (en mi caso el tema estaba en que ese hilo se lanzaba en un
constructor estático y luego se hacía el sueco). Como un bool es una
variable atómica no hay problema de que el hilo la pille en mal estado, o
vale true o false.

Y que no se te olvide poner la condición de salida a cierto cuando termine
tu ficha o la aplicación, o vas a tener diversión.

"Lazarte Federico" escribió en el mensaje de
noticias news:
On Feb 21, 6:58 pm, "Alberto Poblacion" <earthling-
wrote:
Mostrar la cita
Gracias por tu respuesta, aun asi no logro que finalize, pues sigue
ejecutando el metodo. Este metodo lo que hace es escanear un
directorio, al presioanr el boton detener, sigue como si nada pasara.
Que puede estar fallando?.
Gracias.
#4 Alberto Poblacion
22/02/2007 - 19:36 | Informe spam
"RFOG" wrote in message
news:
Mostrar la cita
Esto tiene remedio: Si antes de lanzar el thread le pones true en la
propiedad IsBackground, entonces termina automáticamente cuando sales de la
aplicación.
#5 Alberto Poblacion
22/02/2007 - 19:39 | Informe spam
"Lazarte Federico" wrote in message
news:
Mostrar la cita
¿Qué le has puesto en el "catch"? Si sales de la función que inició el
hilo, el hilo termina. ¿Has probado a seguirlo con el debugger, a ver si
efectivamente entra en el catch cuando pulsas el botón de interrumpir?
Ads by Google
Search Busqueda sugerida