Ver Mensaje Individual
  #1  
Antiguo 30-11-2007
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Reputación: 27
eduarcol Va por buen camino
Hilos y ExecuteAndWait

Hola a todos, estoy haciendo una aplicacion multihilos para respaldar la base de datos, para ello utilizo el procedimiento ExecuteandWait del amigo Delphi.com.ar para el que no la conozca:

Código Delphi [-]
procedure THFirebird.ExecuteAndWait( ACommand : String );
var
  StartInfo   : STARTUPINFO;
  ProccesInfo : PROCESS_INFORMATION;
  ExitCode    : Cardinal;
begin
  ZeroMemory( @StartInfo, SizeOf(STARTUPINFO) );
  with StartInfo do
  begin
    cb          := SizeOf(STARTUPINFO);
    dwFlags     := STARTF_USESHOWWINDOW;
    wShowWindow := SW_HIDE;
  end;
  Win32Check( CreateProcess(nil, PChar(ACommand) ,nil, nil, FALSE,
                            CREATE_NEW_CONSOLE, nil, nil, StartInfo, ProccesInfo) );
  repeat
    Application.HandleMessage;
    GetExitCodeProcess(ProccesInfo.hProcess, ExitCode);
  until ExitCode <> STILL_ACTIVE;
end;

el llamado lo hago asi:

Código Delphi [-]
cComprimir := 'LHA a ' + chRespaldo + ' ' + chRespaldo + '.FBK';
   cRespaldo := gBak + chRuta  + ' ' + chRespaldo + '.FBK';   
   ExecuteAndWait(cRespaldo);
   ExecuteAndWait(cComprimir);

el problema consiste en que en que siempre entra al primer ExecuteAndWait, tanto si coloco el respaldo como la compresion, pero ya no vuelve al execute del hilo.

Yo creo que algunas de las cosas de la funcion ExecuteAndWait interrumpen el hilo, pero es solo una teoria ya que no se en realidad como trabaja.

Si alguien se le ocurre algo...

Muchas gracias por leerme
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
Responder Con Cita