Mit Tasks habe ich keine Erfahrungen aber mit Threads schon.
Synchronisieren musst Du Zugriffe auf das Formular, um Zugriffsprobleme zu vermeiden.
Ohne Synchronisation kann es zwar klappen, aber Du kannst auch unvorhersehbare Probleme bekommen (von unauffälligen Datenfehlern bis Abstürzen).
Delphi-Quellcode:
TThread.Synchronize(nil,
procedure
begin
MyForm.Caption := IntToStr(i);
end);
Sleep(1000);
Wenn Du Dein Sleep auf 1000 einstellst, solltest Du auch den gewünschten Effekt sehen.
Sonst ist die Pause m.E. zu kurz, um etwas zu bemerken und der Mainthread ist voll belastet.