Zitat von
Rer:
...und warte mit WaitForSingleObject auf dessen Beendigung, aber während ich das mache ist mein
GUI nicht ansprechbar ...
Irgendwie auch logisch, nicht?
Die Sache in einen Thread auszulagern ist schon eine Möglichkeit, allerdings wirst Du Dir noch Gedanken machen müssen, wie du die Ergebnisse in der
GUI darstellst (die
VCL ist nicht threadsicher).
Eine andere Möglichkeit wäre, dein 'WaitForSingleObject' mit einem Timeout von z.B. 200ms aufzurufen und dann mit Application.ProcessMessages dafür zu sorgen, das die
GUI nicht einfriert. Großartige Aktionen wirst Du aber nicht ohne Weiteres ausführen können (Programm beenden, abbrechen etc.). 'Ohne Weiteres' bedeutet hier, das es schon geht, aber eben nur mit etwas Schmalz.
Delphi-Quellcode:
While WaitForSingleObject (MyHandle, 100) = WAIT_TIMEOUT Do
Application.ProcessMessages;