Ver Mensaje Individual
  #1  
Antiguo 19-09-2005
eureka eureka is offline
Miembro
 
Registrado: sep 2005
Posts: 13
Reputación: 0
eureka Va por buen camino
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

Código Delphi [-]
 procedure BtoCancelarClic();
 begin
 
     Thread.Suspend;
     if Desea Cancelar then
 
         begin
 
             Thread.FinThread();
             Thread.Resume;
 
         end
 
     else
 
         begin
 
             Thread.Resume;
 
         end;
 
 end;
 
 
 // Indicar la finalizacion
 procedure TThread.FinThread();
 begin
 
     fbEnd:= True;
 
 end;
 
 
 procedure TThread.Execute;
 var
 ...
 begin
 
     while not Eof(F) and bOk and not fbEnd do
 
         begin
 
             Application.ProcessMessages;
 
         ...
         end;
 
     if bOk and not fbEnd then
 
         fDatabase.Commit
 
     else
 
         fDatabase.Rollback;
 
 end;
 
 
 destructor TThread.Destroy();
 begin
 
     if fDatabase.InTransaction then fDatabase.Rollback;
     fDatabase.Close; fSession.Close;
     fDatabase.Free; fSession.Free;
     PostMessage(fOwnerHandle, WM_User + 1, Self.ThreadID, 0);
     inherited Destroy;
 
 end;
Espero ue aquellos que esten mas familiarizados con los procesos con hilos puedan sugerir alguna idea y/o consejo. Gracias por todo ello.

Última edición por dec fecha: 19-09-2005 a las 10:28:23. Razón: ¡¡Encerrar el código fuente entre las etiquetas [DELPHI] ... [/DELPHI]!!
Responder Con Cita