![]() |
Terminar y liberar Thread
Hola a todos,
Tengo un proceso que debe cargar los datos de un archivo sobre una base de datos. He decidido realizar el proceso de carga en un Thread y mantener en el formulario principal una barra de progreso junto a un boton para cancelar ( reversionar la base de datos, rollback, etc... ) Me he topado con los tipicos problemas de "access violation", al hacer clic sobre cancelar, sin encontrar ninguna solucion El codigo es Espero ue aquellos que esten mas familiarizados con los procesos con hilos puedan sugerir alguna idea y/o consejo. Gracias por todo ello. |
Yo utilizaría las funcionalidades de la clase TThread, en lugar de crear unas propias terriblemente similares, por ejemplo en lugar del método FinThread y la variable fbEnd, utilizaría Terminate y Terminated. Sacaría el Application.ProcessMessages para no mezclarme con el hilo de la VCL.
Por otro lado, cuando se ejecuta el Destroy, es muy posible que el hilo siga ejecutándose, por eso si liberas todos los objetos que utilizas en Execute, este te dará un access violation. Prueba cambiar el código que tienes en Destroy a OnTerminate, o DoTerminate. Saludos! |
La franja horaria es GMT +2. Ahora son las 13:03:31. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi