Tengo el siguiente problema, que no sé cómo solucionar, he probado de todo... TBackgroundWorker, TThread, JVThread... y nada de nada...
Esto es un resumen de mi librería dll
Código Delphi
[-]type
TNuevo = class(TObject)
sNuevo: TIdHTTP;
private
public
procedure Funcion(var1, var2, var3: string);
constructor Create;
destructor Destroy; override;
end;
constructor TNuevo.Create;
begin
inherited;
sNuevo := TIdHTTP.Create(nil);
sNuevo.HandleRedirects := True;
end;
destructor TNuevo.Destroy;
begin
sNuevo.Free;
inherited;
end;
var finalizado : Boolean;
procedure TNuevo.Funcion(var1, var2, var3: string);
var h : string;
begin
..........
..........
h:= sNuevo.Get(var1);
..........
..........
finalizado := True;
end;
En un momento de la rutina principal, quiero crear un hilo nuevo que ejecute el procedimiento "Funcion". Entonces me he creado un objeto TThread, así:
Código Delphi
[-]Type
TBack = class(TThread)
private
protected
procedure Execute; override;
public
Constructor Create(CreateSuspended : boolean);
end;
constructor TBack.Create(CreateSuspended : boolean);
begin
inherited Create(CreateSuspended);
end;
var sBack : TBack;
procedure TBack.Execute;
begin
try
gNuevo.Funcion('texto1', 'texto2', 'texto3': string);
except
finalizando := True;
end;
end;
Entonces, en la rutina principal pongo:
Código Delphi
[-]gNuevo := TNuevo.Create;
sBack := TBack.Create(False);
sBack.FreeOnTerminate := False;
finalizado := False;
sBack.Resume;
while finalizado = False do begin
try
Application.ProcessMessages;
except
end;
end;
gNuevo.Destroy;
sBack.Destroy;
Pero no hay forma de que funcione de forma correcta...
Sin el Thread funciona a la perfección, pero se queda congelado hasta que acaba, con el Thread, "Funcion" se raya, según le da... y me salen excepciones...