Entwickler-Ecke
Sonstiges (Delphi) - Prozesse abbrechen
>spEEd> - Di 16.05.06 14:34
Titel: Prozesse abbrechen
Hi,
sofern ich das richtig verstanden habe, hält
Application.Processmessages; das Programm so lange an, bis alle Prozesse, die im Hintergund (z.B. in Prozeduren) ablaufen, von dem Computer abgearbeitet wurden. Gibt es auch die Möglichkeit diese Prozesse abzubrechen?
>spEEd>
Moderiert von
Christian S.: Topic aus Sonstiges (Delphi) verschoben am Di 16.05.2006 um 14:37Moderiert von
Gausi: Topic aus Windows API verschoben am Di 16.05.2006 um 15:13
jasocul - Di 16.05.06 14:39
Suche nach
KILLPROCESS findet brauchbare Treffer.
F34r0fTh3D4rk - Di 16.05.06 14:42
ich glaube nicht, dass er das meint, er spricht ja von prozeduren
Gausi - Di 16.05.06 14:48
Ich glaube, das hast du falsch verstanden. Oder ich habe dich falsch verstanden. In einem Programm läuft immer nur ein Prozess (ist evtl. nicht der richtige Begriff) ab (es sein denn, man verwendet Threads). Wenn eine Prozdur OnKlickIrgendwas ausgeführt wird, und in dieser Zeit z.B. auch ein Timer sein Intervall beendet und eigentlich was anderes tun möchte, dann muss der Timer so lange warten, bis die OnKlick-Prozedur fertig ist.
Ein "Vordrängeln" ist möglich, wenn man z.B. in die OnKlick-Prozedur an einigen Stellen ein Application.ProcessMessages aufruft. Das bewirkt, dass die Nachrichtenschleife des Programms verarbeitet wird. In die Nachrichtenschleife kommt z.B. rein, wenn der User in der Zwischenzeit einen anderen Knopf gedrückt hat, oder sich der Timer gemeldet hat.
Das heisst: Application.Processmessages hält nicht das Programm an, bis alle laufenden Prozesse beendet sind, sondern hält die laufende Berechnung an und schiebt die Verarbeitung der Nachrichten (z.B. Usereingaben) an das Programm dazwischen.
jasocul - Di 16.05.06 14:49
Könnte auch sein. Ich habe als Ausgangspunkt meiner Überlegungen "Application.ProcessMessages" genommen. :?
>spEEd> - Di 16.05.06 14:59
Vielleicht hab ich mich einfach nur ein wenig missverständlich ausgedrückt...
Ich möchte nur die Prozesse, die in meinem Programm ausgeführt werden abbrechen. Beispiel: Ich habe eine Endlos-Schleife in meinem Programm und möchte, dass bei einem Mausklick alles abgebrochen wird, was das Programm bearbeitet (also auch diese Endlos-Schleife).
Ich weiß nicht, ob es hierfür eine Lösung gibt, allerdings könnte ich dadurch Änderungen der Kamera-Ansicht bei meinem 3D-Programm wesentlich schneller berechnen lassen.
Gausi - Di 16.05.06 15:11
Das lässt sich z.B. mit einer globalen Variable machen (oder einer Eigenschaft der Form).
In der Endlossschleife setzt du erstens alle paar Durchläufe ein Application.processmessages, gefolgt von einem if Abbrechen then break;. Ins OnClick des Abbrechen-Buttons kommt dann ein Abbrechen := True;.
Vor Beginn der Rechnung/Schleife muss natürlich "Abbrechen" wieder auf False gesetzt werden.
Aber das hat nichts mehr mit Winapi zutun (*zurückverschieb*)
>spEEd> - Di 16.05.06 15:25
Ich habe in meinem Programm leider zu viele Prozeduren, Funktionen und Schleifen, um überall die IF-Abfrage mit einzubauen. Schade, dass es dafür keine weitere Möglichkeit gibt, aber trotzdem vielen Dank an alle für eure Hilfe!
>spEEd>
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!