Auf einen Prozess warten
-
Hi,
wie kann ich wenn ich eine funktion aufruf, dem Programm klarmachen, dass es warten soll bis diese fertig is?
Mein Problem is folgendes:
Ich hab n Portscanner geschrieben, der mit der Klasse TClientSocket arbeitet. Wenn ich aber die Daten an die Klasse übergeb und sie dann connecten lasse, dann läuft das Programm weiter ohne zu warten bis die Ausgabe (die läuft über OnConnect von TClientSocket) fertig is. die klasse hinkt sozusagen hinterhercu
-
"WaitFor????Object" dürfte hier dein Freund sein...
-junix
-
Ich hab keine Ahnung was du meinst *g*
Aber ich hab schon ne lösung gefunden.
Bevor die Klasse aufgerufen wird wird ne globale bool variable test_fertig auf false gesetzt und bei OnError und OnConnect der Klasse wird die Variable auf true gesetzt. nach dem Aufruf wird mit if (test_fertig) Application->ProcessMessages(); solange gewartet bis die Klasse fertig is.
-
Diese Lösung ist nicht ganz Optimal... => Prozessorzeit
Schau dir mal die API-Befehle CreateEvent, WaitForSingleObject, etc. genauer an.
-junix
-
Ja, schau mal hier:
http://www.bytesandmore.de/rad/cpp/snipp/sc03025.phpIch glaube das hilft dir ein bisschen weiter.
while(WaitForSingleObject(stgProcessInfo.hProcess, 100) == WAIT_TIMEOUT) { Application->ProcessMessages(); // Nachrichtenwarteschlage verarbeiten }
Das solltest du aber in einem Thread haben.