Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-09-2005
eureka eureka is offline
Miembro
 
Registrado: sep 2005
Posts: 13
Poder: 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
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 11:08:05.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi