Die Klasse TThread besitzt die Prozedur "WaitFor()".
Damit wartet der aufrufende Thread solang, bis der Thread der Instanz der TThread-Klasse beendet wurde.
Diese Prozedur wird auch über den Destructor aufgerufen.
Ein einfaches "NameDerKlasseninstanz.Free;" wartet, bis der Thread zu Ende ist und gibt dann Alles frei.
Also im OnClose-Event deiner Form:
Name.Free;
oder
Delphi-Quellcode:
Name.WaitFor;
// Irgendwas ggf. noch erledigen
Name.Free;