Bei der einfach Timer-Komponente (TTimer) braucht man da wohl "keine" Angst zu haben.
Diese kann erst ihre Ereignisprozedur aufrufen, wenn der Hauptthread arbeitet und die Botschaftswarteschlange verarbeitet, denn der arbeitet ja über diese.
Und die Ereignis-Procedur hält ja diesen an, es sei denn, man fügt Application.ProcessMessages; in den Code diese Prozedur mit ein.
Nimm dir z.B. mal 'nen Button und einen Timer mit dem Interval von 1 (ms) und den einfachen Code
Delphi-Quellcode:
Procedure TForm1.Timer1Timer(Sender: TObject);
Begin
Caption := IntToStr(StrToIntDef(Caption, 1) + 1);
End;
Procedure TForm1.Button1Click(Sender: TObject);
Begin
Sleep(15000);
End;
Und dann schau mal auf die Titelleiste und drück den Button ^^