Einzelnen Beitrag anzeigen

blablab

Registriert seit: 3. Jan 2006
509 Beiträge
 
Delphi 7 Enterprise
 
#3

AW: Pipe EOF abfragen oder so :)

  Alt 18. Nov 2010, 22:26
Bis jetzt sieht die Execute-Methode meines Threads so aus:
Delphi-Quellcode:
if CreateProcess(name, comLine, nil, nil, true, CREATE_NEW_CONSOLE, nil, nil, StartupInfo, ProcessInfo) then begin
   Sleep(100);
   if InstallHook(ProcessInfo.dwThreadId) then begin
      while True do begin
{1}      if WaitForSingleObject(ProcessInfo.hProcess, 10) <> WAIT_TIMEOUT then Exit;
         GetExitCodeProcess(ProcessInfo.hProcess, ExitCode);
{2}      if ExitCode <> STILL_ACTIVE then Exit;
         bool := ReadFile(PipeOutputRead, buf[1], BUF_SIZE, BytesRead, nil);
{3}      if not bool then Exit;
{4}      if bytesRead = 0 then Exit;

         PipeBufferBearbeiten(buf, BytesRead);
      end;
   end;
end;
Wenn ich nun die Anwendung, die mit CreateProcess gestartet wird schließe, wird weiterhin die while-Schleife ausgeführt. Irgendwann blockiert ReadFile soviel ich weiß. Bei allen 4 if-Bedingungen wird niemals das Exit aufgerufen. Langsam gehen mir die Ideen aus...

Geändert von blablab (19. Nov 2010 um 14:38 Uhr)
  Mit Zitat antworten Zitat