Ein wenig
OT:
Ich würde grundsätzlich Code vermeiden, der Application.ProcessMessages aufruft. Der Programmablauf kann dadurch nämlich sehr schwer nachvollziehbar bzw. unvorhersehbar werden.
Zumindest sollte man damit sehr vorsichtig sein. Für Aktualisierungen der
GUI bei längeren Schleifen, kann es durchaus sinnvoll sein, um Fortschritte anzuzeigen. Man muss dann aber dafür sorgen, dass keine anderen Ereignisse das Programm beeinflussen können (was sehr aufwendig werden kann).
Mir ist nicht ganz klar, welches Problem diese Delay-Routine eigentlich lösen soll. Ja gut, wahrscheinlich, dass die Oberfläche nicht einfriert, wenn man im Main-Thread Sleep aufruft. Nur ist die Frage: Warum sollte man im Main-Thread Sleep aufrufen? Das an sich halte ich schon für falsch.
Wo steht hier, dass es eine Oberfläche/
GUI gibt?
Ich habe mehrere Anwendungen, die ein Sleep nutzen, da in regelmäßigen Abständen geprüft werden muss, wie der Zustand bestimmter Verzeichnisse, bzw. Datenbank-Tabellen ist. Die Prüfung darf nur eine bestimmte Anzahl Versuche haben und es gibt mehrere verschiedene voneinander abhängige Prüfungen, die nacheinander ablaufen müssen. Eine
GUI gibt es nicht und die Anwendung wird durch automatisierte Prozesse angestoßen. Es sind in der Regel Konsolen-Anwendungen aber es gibt nicht mal ein Konsolen-Fenster. Ja, man kann dafür auch Timer verwenden. Das hätte aber deutlich mehr Programmieraufwand bedeutet.
Bitte immer dran denken: Nur, weil man nicht weiß, wo etwas sinnvoll eingesetzt werden kann, heißt das nicht, dass es keine sinnvollen Einsatzgebiete dafür gibt.