Foros del Web » Programación para mayores de 30 ;) » .NET »

¿Matar hilos?

Estas en el tema de ¿Matar hilos? en el foro de .NET en Foros del Web. Hola, Estoy programando una aplicación basada en hilos, y tengo varios botones uno para iniciar todos los hilos, otro para pararlos todos y tantos botones ...
  #1 (permalink)  
Antiguo 25/08/2006, 02:38
Avatar de SuperPinwi  
Fecha de Ingreso: septiembre-2005
Mensajes: 317
Antigüedad: 19 años, 5 meses
Puntos: 1
¿Matar hilos?

Hola,

Estoy programando una aplicación basada en hilos, y tengo varios botones uno para iniciar todos los hilos, otro para pararlos todos y tantos botones como hilos para parar cada uno por separado. El caso es que inicia y ejecuta los hilos perfectamente, el problema viene a la hora de pararlos, yo había pensado utilizar el método stop() pero al ejecutarlo salta una excepción... he buscado información y al parecer no se recomienda utilizar este método... sabéis si es normal q salte la excepción a pesar de q no sea recomendado? hay alguna otra forma de hacer q se pare cada hilo por separado y todos a la vez?

Gracias por anticipado



  #2 (permalink)  
Antiguo 25/08/2006, 06:59
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 21 años, 8 meses
Puntos: 7
Hola amigo,

Lo más recomendable es que despues de crear el objeto Hebra e instanciarlo (objHebra), le indiques que se ejecute bajo Backgroud, es decir:
objHebra.isBackGround = False.

Para parar una hebra, mejor hacer asi: objHebra.Abort()

No debería darte ningun fallo. Saludos amigo.
__________________
Charlie.
  #3 (permalink)  
Antiguo 25/08/2006, 06:59
Avatar de SuperPinwi  
Fecha de Ingreso: septiembre-2005
Mensajes: 317
Antigüedad: 19 años, 5 meses
Puntos: 1
Bueno os dejo un enlace a una página que me ha parecido interesante y q tal vez me pueda ayudar a resolverlo (yo lo dejo hasta el lunes jeje) por si a alguien más le pudiera interesar / ayudar

http://www.interact-sw.co.uk/iangblo...2/cancellation
  #4 (permalink)  
Antiguo 25/08/2006, 07:00
Avatar de SuperPinwi  
Fecha de Ingreso: septiembre-2005
Mensajes: 317
Antigüedad: 19 años, 5 meses
Puntos: 1
Cita:
Iniciado por chcma Ver Mensaje
Hola amigo,

Lo más recomendable es que despues de crear el objeto Hebra e instanciarlo (objHebra), le indiques que se ejecute bajo Backgroud, es decir:
objHebra.isBackGround = False.

Para parar una hebra, mejor hacer asi: objHebra.Abort()

No debería darte ningun fallo. Saludos amigo.
muchas gracias amigo!! el lunes cuando vuelva al curro lo pruebo y ya te diré q tal
  #5 (permalink)  
Antiguo 25/08/2006, 15:04
 
Fecha de Ingreso: agosto-2006
Ubicación: en lima peru
Mensajes: 184
Antigüedad: 18 años, 5 meses
Puntos: 0
Prueba con Dispos

Hola haz probado con dispose???


object.dispose()
  #6 (permalink)  
Antiguo 26/08/2006, 16:06
 
Fecha de Ingreso: agosto-2006
Mensajes: 101
Antigüedad: 18 años, 5 meses
Puntos: 0
Declara el hilo como propiedad de la clase y desde donde quieras haces

Código:
hilo.Abort()
  #7 (permalink)  
Antiguo 27/08/2006, 08:54
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 21 años, 8 meses
Puntos: 7
Perdón me he equivocado en una línea:
objHebra.isBackGround = False. Es TRUE, no False. Saludos
__________________
Charlie.
  #8 (permalink)  
Antiguo 27/08/2006, 23:17
Avatar de SuperPinwi  
Fecha de Ingreso: septiembre-2005
Mensajes: 317
Antigüedad: 19 años, 5 meses
Puntos: 1
Cita:
Iniciado por programadorvip Ver Mensaje
Hola haz probado con dispose???


object.dispose()
sí ahora lo acabo de probar pero no funciona, creo que no hace lo que busco realmente pero gracias de todos modos amigo!
  #9 (permalink)  
Antiguo 27/08/2006, 23:19
Avatar de SuperPinwi  
Fecha de Ingreso: septiembre-2005
Mensajes: 317
Antigüedad: 19 años, 5 meses
Puntos: 1
Cita:
Iniciado por dvelazquez Ver Mensaje
Declara el hilo como propiedad de la clase y desde donde quieras haces

Código:
hilo.Abort()
esto me vale como solución "parcial" jeje de hecho así es como lo dejé el viernes antes de salir del trabajo y con ello sí que consigo lo que quiero, lo único malo es que por lo visto es malo utilizarlo, no deja el programa en un estado del todo "preciso", pero si no encuentro nada mejor así se quedará.

Muchas gracias compañero!!
  #10 (permalink)  
Antiguo 27/08/2006, 23:47
Avatar de SuperPinwi  
Fecha de Ingreso: septiembre-2005
Mensajes: 317
Antigüedad: 19 años, 5 meses
Puntos: 1
Cita:
Iniciado por SuperPinwi Ver Mensaje
muchas gracias amigo!! el lunes cuando vuelva al curro lo pruebo y ya te diré q tal
chcma, ya lo he probado, y te puedo decir lo mismo q a dvelazquez, consigo el resultado esperado, pero el problema no se resuelve de un modo del todo consistente... y es que lanza una excepción asíncrona! he leído varios artículos q recomiendan no utilizarlo al igual que pasaba con el stop también

así q en busca de una solución mejor, de momento me quedo con eso q por lo menos funciona!!

mil gracias por las molestias y si descubro cómo pararlo de un modo más consistente no dudaré en contároslo por si os puede servir en un futuro compañeros!
  #11 (permalink)  
Antiguo 30/08/2006, 00:37
Avatar de SuperPinwi  
Fecha de Ingreso: septiembre-2005
Mensajes: 317
Antigüedad: 19 años, 5 meses
Puntos: 1
Bueno, muchas gracias a todos los que os habéis molestado en tratar de ayudarme!! De veras!!

Sólo quería deciros que he encontrado una forma mejor de "matar" un hilo. Veréis, es tan fácil como encerrar la ejecución del hilo en un bucle while con una variable de tipo bool (while fin=true). Cuando se desee matar el hilo, en lugar de hacer hilo1.abort(), se haría hilo1.ejecucionHilo(false) y con ello el hilo se termina sin dar lugar a ninguna excepción.

Espero haberme explicado bien por si le puede servir a alguien!!

Nos vemos compañeros
  #12 (permalink)  
Antiguo 31/08/2006, 06:56
Avatar de SuperPinwi  
Fecha de Ingreso: septiembre-2005
Mensajes: 317
Antigüedad: 19 años, 5 meses
Puntos: 1
Cita:
Iniciado por SuperPinwi Ver Mensaje
Bueno, muchas gracias a todos los que os habéis molestado en tratar de ayudarme!! De veras!!

Sólo quería deciros que he encontrado una forma mejor de "matar" un hilo. Veréis, es tan fácil como encerrar la ejecución del hilo en un bucle while con una variable de tipo bool (while fin=true). Cuando se desee matar el hilo, en lugar de hacer hilo1.abort(), se haría hilo1.ejecucionHilo(false) y con ello el hilo se termina sin dar lugar a ninguna excepción.

Espero haberme explicado bien por si le puede servir a alguien!!

Nos vemos compañeros
aquí viene bien explicado (en inglés):
http://www.devx.com/codemag/Article/17442/0/page/8

Espero q a alguien le sirva de utilidad.

Saludos a todos!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:54.