¿La mejor forma de matar un hilo?

10/10/2008 - 11:26 por Gonzalo Rodríguez Carrera | Informe spam
Buenos días.

Estoy desarrollando un control personalizado. Este control es una grid
totalmente personalizada (la creo a base de dibujar las líneas, los
datos, etc...) y lo cierto es que me funciona muy bien.

El tema es que le he añadido un modo en el que si la consulta es muy
grande, por ejemplo, 100.000 registros de 55 campos tarda bastante,
como es lógico. Entonces añadí un proceso de carga mediante dos hilos
que se lanzan simultaneamente:
El primero realiza la carga de los n primeros datos y los "plancha" en
pantalla mientras el segundo hilo permanece cargando la totalidad de
los datos y, cuando los tiene, sustituye al primer "buffer" de datos
estando así todos los datos disponibles.

Esto me funciona de maravillas y nunca hay un parón visible al
usuario.

Ahora mi pregunta es: ¿Como puedo matar de forma segura a esos dos
hilos?

El código de las llamadas es este:

hilo1 = new Thread(this.CargaBufferTemporal);
hilo1.IsBackground = true;
hilo2 = new Thread(this.CargaBufferPrincipal);
hilo2.IsBackground = true;

hilo1.Start();
hilo2.Start();

Como siempre mil gracias por adelantado

Gonzalo Rodríguez Carrera
 

Leer las respuestas

#1 Alberto Poblacion
10/10/2008 - 12:18 | Informe spam
"Gonzalo Rodríguez Carrera" wrote in message
news:
[...]
Ahora mi pregunta es: ¿Como puedo matar de forma segura a esos dos
hilos?
[...]
hilo1 = new Thread(this.CargaBufferTemporal);
hilo1.IsBackground = true;
[...]
hilo1.Start();



Si quieres parar el hilo antes de que termine el método al que has
llamado ("CargaBufferTemporal"), puedes usar dos llamadas distintas:
hilo1.Interrupt() e hilo1.Abort(). La primera ocasiona en el método llamado
un ThreadInterruptedException, y la segunda un ThreadAbortException, por lo
que en ambos casos es necesario que metas el contenido del método dentro de
un try...catch. Cuando el catch capture una de estas excepciones, basta con
que hagas un return, con lo que el método termina y por lo tanto finaliza la
ejecución del hilo.

Preguntas similares