Wieso willst unbedingt einen Thread ?
Delphi-Quellcode:
loopBeginTickCount := GetTickCount;
// FBitmap mit neuem Frame bestücken, was auch immer das ist
Synchronize(DrawFrame);
Sleep(Max(MS_PER_FRAME - (GetTickCount-loopBeginTickCount), 1));
Macht absolut nix innerhalb des Threads, sondern alle "Arbeit" wird in der
VCL erledigt ... wozu also keinen Timer, statt des Sleeps und gleich in der
VCL bleiben?
Ein Therapeut entspricht 1024 Gigapeut.