Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   cargar dll en un hilo y ejecutar funcion (https://www.clubdelphi.com/foros/showthread.php?t=81467)

jars 16-11-2012 20:53:02

cargar dll en un hilo y ejecutar funcion
 
Hola amigos.
Tengo un programa que utiliza una dll que algunas veces demora bastante en la ejecucion de una funcion.
La cargo cuando se inicia la aplicacion en un hilo con el componente TJvThread de Jedi con el siguinte codigo:

Código Delphi [-]
//variables publicas, se usan desde otra unit   
lACD : IACDClient;   
hAsClient: LongWord;  

procedure TFormMain.thrASClientExecute(Sender: TObject; Params: Pointer); 
begin   
  try     
    hAsClient := LoadLibraryASClient;     
    try       
      ASClientStartUp(AS_ACTIVATE_ACD_SERVICE);       
      lACD := NewACDClient;       
      trace('thrASClient StartUp OK');     
    except       
      on E: Exception do trace('@E ASClientStartUp '+ E.Message);     
    end;   
  except     
    on E: Exception do trace('@E LoadLibraryASClient '+ E.Message);   
  end; 
end;

El tema con esto es que ante un evento del hilo principal tengo que ejecutar una funcion de la dll.
Código Delphi [-]
  lRes:= lACD.WRSetupCallBack(cbtable, cbrecord, cbdatetime, cbphone);

Soy conciente que al ejecutarse desde el hilo principal, se va a seguir demorando mi programa.
Como tendria que hacer para que la funcion WRSetupCallBack se ejecute en el hilo, como le aviso y le paso los parametros?

Espero haberme explicado.
Saludos

CSIE 17-11-2012 08:13:15

Dos cosas, dices que cargas la DLL en un Thread aunque pones "procedure TFormMain", no termino de entenderlo, por otro lado, ¿El thread está durmiente y espera que le avises para ejecutar o está en loop continuo o no está arrancado o ...?.

Saludos

jars 17-11-2012 14:16:37

Hola, gracias por responder.
Lo que ves TFormMain es porque estoy utilizando el componente TJvThread de Jedi.
La idea es que al arranacar el programa cargue esta dll en un hilo y quede en memoria hasta que finalice el mismo.
Desde el hilo principal en distintos momentos tengo que ejecutar la funcion WRSetupCallBack con sus parametros
y que mi aplicacion siga su curso independientemente de lo que pueda demorar la funcion.
Espero haberme explicado mejor.
Gracias por tu ayuda.


La franja horaria es GMT +2. Ahora son las 13:52:49.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi