Wie wäre es mit TThread.Queue?
Der Führt dann die Methode immer aus. D.h. bei jedem noch so kleinen Progress, wird die Methode gerufen.
Die Timer-Lösung macht ein Update nur einmal in der vorgegebenen Zeit, egal wie oft der Timer eingeschaltet wurde.
Das bringt ein wenig "Ruhe" rein