Hola ElGatitoTapatio.
El error que estas recibiendo no se debe a la ejecución del Thread. Puede provocarlo el código invocado dentro del método
EnviarDocumentos o bién otro ajeno a la unidad
uHilos, códigos que en ambos casos no puedo evaluar.
Verificarlo esto es muy simple. Basta con hacerte otra unidad en la que quites todo lo foráneo a la ejecución del Thread y respetes el resto.
Por ejemplo:
Código Delphi
[-]
unit Unit2;
interface
uses
Windows, SysUtils, Classes;
type
TEnviarTemporales = class( TThread )
private
Handle : HWND;
protected
procedure EnviarDocumentos;
procedure Execute; override;
public
constructor Create(EHandle:HWND; ThreadPriority: TThreadPriority);
end;
implementation
uses Unit1;
constructor TEnviarTemporales.Create(EHandle:HWND; ThreadPriority: TThreadPriority);
begin
inherited Create(False);
Handle := EHandle;
end;
procedure TEnviarTemporales.EnviarDocumentos;
var
NetResource: TNetResource;
vRuta,NuevaRuta : PChar;
Error,Diagonal : String;
ErrCode,i : integer;
Listado,ListadoEliminar : TStrings;
begin
Listado := TStringList.Create;
ListadoEliminar := TStringList.Create;
try
for i:= 1 to 50 do
begin
Form1.Caption := IntToStr(i); Sleep(20);
end;
finally
Listado.Free;
ListadoEliminar.Free;
end;
end;
procedure TEnviarTemporales.Execute;
begin
Synchronize(EnviarDocumentos);
Terminate;
end;
end.
Y luego verás que se lo puede llamar una o n veces que no presenta ningún error durante o al cerrar la aplicacion:
Código Delphi
[-]
...
implementation
uses Unit2;
var
HEnviarTemporales : TEnviarTemporales;
procedure TForm1.FormDblClick(Sender: TObject);
begin
if not Assigned(HEnviarTemporales) then
begin
HEnviarTemporales := TEnviarTemporales.Create(Handle, tpNormal);
HEnviarTemporales := nil;
end;
end;
Saludos.