Manfred Polak
2017-06-18 20:15:43 UTC
Moin!
Ich habe in einem VCL-Programm eine Schleife, deren Abarbeitung mehrere
Minuten dauern kann. Deshalb wird bei jedem 500000. Schleifendurchlauf
neben ein paar anderen Dingen auch ein Application.ProcessMessages
ausgeführt. Der eigentliche Zweck davon ist. dass ein "Abbrechen"-Button
sofort seine Wirkung entfaltet, und das funktioniert auch perfekt.
Als Nebeneffekt kann ich auch das Fenster verschieben etc., während das
Programm rödelt und einen CPU-Kern zu 100% auslastet, und die Symbole
in der Titelleiste zum Maximieren und Minimieren tun ihre Wirkung. Nur
das Symbol zum Schließen funktioniert nicht, während die Schleife läuft.
Wenn ich es anklicke (oder Alt+F4 drücke), passiert erst mal nichts.
Erst wenn die Schleife durch ist (oder wenn ich danach auf "Abbrechen"
klicke), wird das Programm beendet.
Dieses Verhalten ist für mich kein Problem, aber mich interessiert,
warum das so ist, und ob man es ohne Aufwand ändern kann.
Manfred
Ich habe in einem VCL-Programm eine Schleife, deren Abarbeitung mehrere
Minuten dauern kann. Deshalb wird bei jedem 500000. Schleifendurchlauf
neben ein paar anderen Dingen auch ein Application.ProcessMessages
ausgeführt. Der eigentliche Zweck davon ist. dass ein "Abbrechen"-Button
sofort seine Wirkung entfaltet, und das funktioniert auch perfekt.
Als Nebeneffekt kann ich auch das Fenster verschieben etc., während das
Programm rödelt und einen CPU-Kern zu 100% auslastet, und die Symbole
in der Titelleiste zum Maximieren und Minimieren tun ihre Wirkung. Nur
das Symbol zum Schließen funktioniert nicht, während die Schleife läuft.
Wenn ich es anklicke (oder Alt+F4 drücke), passiert erst mal nichts.
Erst wenn die Schleife durch ist (oder wenn ich danach auf "Abbrechen"
klicke), wird das Programm beendet.
Dieses Verhalten ist für mich kein Problem, aber mich interessiert,
warum das so ist, und ob man es ohne Aufwand ändern kann.
Manfred