Guybrush Threepwood Geschrieben 30. Juni 2003 Geschrieben 30. Juni 2003 Hi, ich habe am Ende eines Programmes folgende Schleife in der Überprüft wird ob ein anderes Programm noch läuft, erst wenn es nicht mehr läuft soll mein Programm beendet werden. Leider habe ich an der Stelle eine CPU Auslastung von 80-99%. Habt ihr ne Idee wie ich die Verringern kann? dwExitCode = NULL; do { GetExitCodeProcess(hInternetExplorer,&dwExitCode); } while(dwExitCode == STILL_ACTIVE); [/PHP] Gruß Guybrush Zitieren
maxim_42 Geschrieben 30. Juni 2003 Geschrieben 30. Juni 2003 Schick es doch in der Schleife 100 ms schlafen sleep(100) In der Zeit bekommt der Rechner Gelegenheit was Anderes zu tun. Zitieren
Goos Geschrieben 30. Juni 2003 Geschrieben 30. Juni 2003 Hi Pirat ...ich weiss ja nicht genau, was du machst, aber wahrscheinlich kommst mit einem WaitForSingleObject besser hin. Goos Zitieren
Guybrush Threepwood Geschrieben 30. Juni 2003 Autor Geschrieben 30. Juni 2003 Hab ich auch dran gedacht und hab ihn 1 Sekunde schlafen geschickt, das hat aber zumindest an der Anzeige im Taskmanager nichts genändert. Ich hab jetzt einfach vor der Schleife die Priorität des Processes auf IDLE gesetzt. Das hat zwar an der Anzeige auch nicht viel gändert, aber ich glaube das läuft jetzt besser. Trotzdem danke. Zitieren
Guybrush Threepwood Geschrieben 30. Juni 2003 Autor Geschrieben 30. Juni 2003 Original geschrieben von Goos Hi Pirat ...ich weiss ja nicht genau, was du machst, aber wahrscheinlich kommst mit einem WaitForSingleObject besser hin. Goos Hi:) Cooool, das ist ja noch viel besser. Danke! Gruß Guybrush Zitieren
geloescht_JesterDay Geschrieben 30. Juni 2003 Geschrieben 30. Juni 2003 Original geschrieben von Guybrush Threepwood Leider habe ich an der Stelle eine CPU Auslastung von 80-99%. Habt ihr ne Idee wie ich die Verringern kann? C ist eigentlich nicht mein Ding... hier aber mal ein Beispiel aus der Borland Hilfe: In diesem Beispiel werden zwei Schaltflächen verwendet, die groß genug für längere Beschriftungen sind. Sobald der Benutzer auf die Schaltfläche mit der Beschriftung Botschaften ignorieren klickt, wird eine lange Folge von Zufallszahlen generiert. Wenn versucht wird, die Größe des Formulars zu verändern, während diese Ereignisbehandlungsroutine noch läuft, geschieht so lange nichts, bis die Routine beendet ist. Anders verhält es sich bei der Schaltfläche Botschaften verarbeiten. Es werden zwar ebenfalls Zufallszahlen generiert, aber die Anwendung kann währenddessen auf Mausereignisse reagieren, also auch auf eine versuchte Größenänderung des Formularfensters. Hinweis: Die Ausführungszeit der Ereignisbehandlungsroutinen hängt vom Prozessor Ihres Computers ab. Das Ende der Ausführung wird mit einer Meldung angezeigt. void __fastcall TForm1::FormCreate(TObject* Sender) { Button1->Caption = "Ignore Messages"; Button2->Caption = "Handle Message"; } void __fastcall TForm1::Button1Click(TObject* Sender) { int x, y; for (int i = 0; i < 64000; i++) { Randomize(); for (int j = 0; j < 64000; j++) y = random(j); x = random(i); } Canvas->TextOut(10, 10, "The Button1Click handler is finished"); } void __fastcall TForm1::Button2Click(TObject *Sender) { int x, y; for (int i = 0; i < 64000; i++) { Randomize(); for (int j = 0; j < 64000; j++) { y = random(j); Application->ProcessMessages(); } x = random(i); } Canvas->TextOut(10, 10, "The Button2Click handler is finished"); Application->ProcessMessages(); würde dir denke ich helfen, beim nächsten mal zumindest Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.