Ver Mensaje Individual
  #3  
Antiguo 07-12-2012
frangarrob frangarrob is offline
Miembro
NULL
 
Registrado: ago 2012
Posts: 13
Reputación: 0
frangarrob Va por buen camino
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...
Responder Con Cita