Obwohl
Danke erst mal für die Diskussion
eigentlich den Thread schon beendet hat.
Da Du ja keine Ruhe gibst...
Das wird mit so einer anonymen Methode ein völlig undurchsichtiger Wust.
Und es kann schon vorkommen, dass der User zum Beantworten der Frage, die ihm das Programm stellt, gerne in irgend einem anderen Menüpunkt des Programms etwas nachschauen würde - geht bei modalen Fenstern nicht.
Na eben... Daher ist Modal sowieso schlecht...
Allgemein: anonymen Methode bringen den Code lesbar da hin wo er gebraucht wird... Daher auch viel übersichtlicher als immer hin und her zu springen wo die eigentliche Procedure ist. Aber darum geht es nicht...
Bleiben wir mal bei Deinem Beispiel...
Delphi-Quellcode:
repeat
Berechne;
Form1.ShowSemiModal;
berechneweiter;
until BefriedigendesErgebnis;
Ich fange den User doch nicht in so einer Schleife... Abgesehen von der UI-Task.
Daher die 5 einfachen Regeln für ein reaktives Userinterface:
Rule #1 / Führe nie Code in einem ONXYEvent aus der länger als wenige Millisekunden dauert. (Außer #2)
Rule #2 / Ich will das Userinterface Updaten? Mach es im OnIdle
Rule #3 / Du brauchst Application.Processmessages - Überprüfe Dein Design
Rule #4 / Eine Aktion dauert 2xlänger als die Zeit einen Thread zu erzeugen? Erzeuge einen Thread!
Rule #5 / Die Zeit eine Thread zu erzeugen ist zu lang. - Erzeuge den Thread vorher und starte ihn nur noch in wenigen (ns)
{Auszug aus meinem Vortrag - Firemonkey im realen Crossplattform-Einsatz}
Designe den Programm-Ablauf so wie der User es auch bedienen würde.
Mavarik
PS.: Rule #6 - Schau wie es der SIR macht...