Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #4  
Antiguo 01-06-2013
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
ElGatitoTapatio,

Cita:
Empezado por ElGatitoTapatio
...Hilo a mi aplicación para realizar un proceso de copiado de archivos...el hilo se ejecuta correctamente...cuando cierro mi aplicacion me genera una excepcion...
Revisa este código:
Código Delphi [-]
constructor TEnviarTemporales.Create(EHandle:HWND; ThreadPriority: TThreadPriority);
begin
  
   inherited Create(False);

   // Establece la prioridad del hilo (tpNormal es el default).
   Priority := ThreadPriority;  

   Handle:= EHandle;

end;

procedure TEnviarTemporales.Execute;
begin

  // Indica que el hilo sera destruido de forma automática por el VCL cuando este finalize.
  FreeOnTerminate := True;

  // Verifica si el hilo se ha finalizado
  if not Terminated then
     Synchronize(EnviarDocumentos);

end;

function TEnviarTemporales.CopiarDocumentos(destino,ruta : String): Integer;
var
...
begin
...
   // Verifica si el hilo se ha finalizado
   if Not Terminated then
      Result:= ShFileOperation(F);
end;

procedure TEnviarTemporales.EnviarDocumentos;
var
...
begin
...
   for i := 0 to Listado.Count-1 do
   begin
      // Verifica si el hilo se ha finalizado
      if Terminated then Exit;
   ...
   end
...
end;

procedure Tfrm_main.FreeNewThread(Sender: TObject);
begin
   // Asegura que la instancia no tenga ninguna referencia
   HEnviarTemporales := nil;
end;

procedure Tfrm_main.EnviarTemporales;
begin
   if not Assigned(HEnviarTemporales) then
   begin

      HEnviarTemporales := TEnviarTemporales.Create(Handle, tpNormal);

      // Este procedimiento se ejecuta al finalizar el hilo
      HEnviarTemporales.OnTerminate := FreeNewThread;

   end
end;

// Si quieres finalizar el hilo en cualquie instante antes de su finalización
procedure Tfrm_main.EndNewThread;
begin
   // Envía una señal de finalización al hilo
   HEnviarTemporales.Terminate;
end
El código anterior sugiere un mecanismo de control para la finalización ordenada del hilo en función del problema planteado, sin embargo te sugiero probar lo indicado en el Msg #2 y hacer los ajustes que sean necesarios.

Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 01-06-2013 a las 00:29:45.
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Aplicacion Delphi lanza Excepcion 0x0eedfade Sieg Varios 4 29-07-2010 14:10:21
Cómo cerrar otra aplicacion desde mi aplicacion en Delphi 7 Gaby123 API de Windows 5 04-01-2007 22:44:51
Aplicacion con varios Hilos de Ejecución samantha jones Varios 1 02-03-2005 17:27:24
Cerrar Aplicacion Nathan API de Windows 3 22-03-2004 19:03:43


La franja horaria es GMT +2. Ahora son las 11:04: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