Sleep im Thread ist vollkommen OK, schließlich blokiert das Sleep dort nur den Thread, so wie man es doch wollte, wärend der Hauptthread, bzw. die
VCL davon unberühert bleibt.
Sowas wie ein Delay im Thread kann da schon mehr "zerstören", vorallem wenn darin z.B Application.ProcessMessages verwendet wurde.
Das der Thread nach der Ausführung noch so im Speicher rumgeistert ist hoffentlich bekannt.
Wenn man nicht selber aufräumen will, dann siehe
TThread.FreeOnTerminate