Problemas para reanudar un hilo

11/01/2005 - 09:25 por Jordi Julià | Informe spam
Hola a todos,

Mi problema es el siguiente, en un proceso de actualización de la base de
datos (bastante largo en cuanto a tiempo de proceso) quiero poner un botón
para poderlo cancelar. (Windows Forms VB.NET)

En el evento Activate del formulario, creo un hilo y lo lanzo:

prc = New Thread(AddressOf Interfase_Inicio_CreacionTransaccionesSQL)
prc.Start()

En el formulario hay habilitado el botón de Cancelar y en todos los bucles
del procedimiento de actualización tengo el DoEvents para detectar si pulsan
el botón. Hasta aquí bien, cuando pulso el botón me responde, y suspendo el
proceso:

prc.Suspend()

Presento un MsgBox para que confirmen si quieren cancelar o no, si responden
que si aborto el proceso, retrocedo las transacciones y cierro el formulario
(esto funciona bien)

prc.abort()

Pero si quiero continuar, debería realizar un: prc.Resume() pero me da un
error, y si no lo hago no retoma el proceso donde lo dejó lo empieza desde
el principio.

¿Como debería hacerlo para que si no quieren cancelar se reanude el hilo en
el punto donde se ha suspendido?

Gracias
Saludos
Jordi
 

Leer las respuestas

#1 Angel J. Hernández M.
20/01/2005 - 05:33 | Informe spam
Saludos... Verifica el estado del hilo. Las únicas razones para que te
arroje una excepción el método Resume() es que el usuario que realiza la
llamada al método no tenga permisos (SecurityException) y que el estado del
hilo no haya sido iniciado, esté muerto o no este suspendido.


Angel J. Hernández M.
MCP - MCAD - MCSD - MCDBA
http://groups.msn.com/desarrolladoresmiranda
http://ajhsis.net



"Jordi Julià" escribió en el mensaje
news:%
Hola a todos,

Mi problema es el siguiente, en un proceso de actualización de la base de
datos (bastante largo en cuanto a tiempo de proceso) quiero poner un botón
para poderlo cancelar. (Windows Forms VB.NET)

En el evento Activate del formulario, creo un hilo y lo lanzo:

prc = New Thread(AddressOf Interfase_Inicio_CreacionTransaccionesSQL)
prc.Start()

En el formulario hay habilitado el botón de Cancelar y en todos los bucles
del procedimiento de actualización tengo el DoEvents para detectar si
pulsan
el botón. Hasta aquí bien, cuando pulso el botón me responde, y suspendo
el
proceso:

prc.Suspend()

Presento un MsgBox para que confirmen si quieren cancelar o no, si
responden
que si aborto el proceso, retrocedo las transacciones y cierro el
formulario
(esto funciona bien)

prc.abort()

Pero si quiero continuar, debería realizar un: prc.Resume() pero me da un
error, y si no lo hago no retoma el proceso donde lo dejó lo empieza desde
el principio.

¿Como debería hacerlo para que si no quieren cancelar se reanude el hilo
en
el punto donde se ha suspendido?

Gracias
Saludos
Jordi







Preguntas similares