Wenn du das Hauptform während der Threadausführung nicht brauchst, brauchst du auch keinen Thread (nur am Rande)
Aber zu deinem Problem:
Ich benutze immer Das Objekt
TThread
In die Klassenmethode TThread.Execute kommt das rein, was der Thread machen soll
Alle Zugriffe auf die
VCL müssen in seperaten Klassenfunktoionen erfolgen, welche mit
Synchronize aufgerufen werden müssen
P.S. Wenn du regelmäßig Application.ProcessMessages aufrufst, reagiert dein Programm auch ...