Auch eine möglichkeit währe, das ganze in das OnIdle event zu packen. Dann wird deine Schleiffe immer ausgeführt wenn das Programm gerade nichts anderes zu tun hat. Das findet vorallem im Spielebereich einsatz und wird auch von Onsetsu verwendet

Erstmal declarierst du deine Schleiffe:
Code:
Procedure Schleiffe(Sender: TObject; var done: Boolean);
Die Implementation sieht wie folgt aus:
Code:
Procedure Schleiffe(Sender: TObject; var done: Boolean);
begin
  done := false;
  //Hier der ganze code rein
end;
Jetzt musst du der Application noch sagen das genau diese Procedur ausgeführt werden soll wenn sie gerade nichts anderes zu tun hat. Mach das aber erst wenn du alles initzialiesiert hast (am besten am ende der Form.OnCreate Events)
Code:
Application.OnIdle := Schleiffe;
Das war alles. wenn du das wieder stoppen willst schreib einfach:
Code:
Application.OnIdle := nil;