czekanie na zamknięcie programu

Autor: Marek Wierzbicki <marek.wierzbickiiiii_at_azymuttttt.pl>
Data: Fri 18 Aug 2006 - 18:21:26 MET DST
Message-ID: <ec4pe6$2ou0$1@news2.ipartners.pl>
Content-Type: text/plain; format=flowed; charset="iso-8859-2"; reply-type=original

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.pl 
Received 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