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);
Priority := ThreadPriority;
Handle:= EHandle;
end;
procedure TEnviarTemporales.Execute;
begin
FreeOnTerminate := True;
if not Terminated then
Synchronize(EnviarDocumentos);
end;
function TEnviarTemporales.CopiarDocumentos(destino,ruta : String): Integer;
var
...
begin
...
if Not Terminated then
Result:= ShFileOperation(F);
end;
procedure TEnviarTemporales.EnviarDocumentos;
var
...
begin
...
for i := 0 to Listado.Count-1 do
begin
if Terminated then Exit;
...
end
...
end;
procedure Tfrm_main.FreeNewThread(Sender: TObject);
begin
HEnviarTemporales := nil;
end;
procedure Tfrm_main.EnviarTemporales;
begin
if not Assigned(HEnviarTemporales) then
begin
HEnviarTemporales := TEnviarTemporales.Create(Handle, tpNormal);
HEnviarTemporales.OnTerminate := FreeNewThread;
end
end;
procedure Tfrm_main.EndNewThread;
begin
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.