Mam dziwny problem z systemem. Uruchamiam pod windows server 2000 program
dosowy instrukcją:
CreateProcess(nil, P, nil, nil, FALSE, CREATE_SEPARATE_WOW_VDM or
NORMAL_PRIORITY_CLASS, nil, D, SI, PI)
a następnie czekam na jego zamknięcie procedurą:
function WaitPrg(var PI: TProcessInformation; time: Integer): Boolean;
var
endexec: Word;
wait: Boolean;
begin
WaitForInputIdle(PI.hProcess, time);
endexec:=WaitForSingleObject(PI.hProcess, time); //problem
WaitForSingleObject(PI.hThread, time);
Wait:=false;
if endexec=WAIT_TIMEOUT then begin
TerminateProcess(PI.hProcess, 0);
Wait:=true;
end;
CloseHandle(PI.hProcess);
CloseHandle(PI.hThread);
WaitPrg:=wait;
WriteLog(FormatString(Now)+' koniec')
end;
i w miejscu w którym zaznaczyłem //problem pojawia się dziwna sytuacja. Otóż
czasami mój program DOSowy zapisuje w logu że kończy działanie (po nim jest
tylko CloseFile) kilkanaście a czasami kilkadziesąt sekund wcześniej, niż
procedura windowsowa, która czeka na zakończenie jego działania.
Jak sprawdzić, czy to Close trwa tak długo czy też dzieje się coś z
systemem?
Marek
--- www.programowanieobiektowe.plReceived on Fri Aug 18 18:25:13 2006
To archiwum zostało wygenerowane przez hypermail 2.1.8 : Fri 18 Aug 2006 - 18:42:02 MET DST