![]() |
Problema con librería DLL y TThread
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 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); begin .......... .......... 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í: 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: 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... |
Recuerda poner los tags al código fuente, ejemplo:
![]() Gracias :) |
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
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í:
Entonces, en la rutina principal pongo:
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... |
frangarrob,
Te comento: Cita:
El código anterior resuelve todo lo comentado (Puntos 1 al 5), pero desconozco si es lo que requiere tu proyecto. Espero sea útil :) Nelson. |
La franja horaria es GMT +2. Ahora son las 00:29:39. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi