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