Neben dem, was Peter Below schrieb, gibt es noch den Fall, dass z.B. durch Application.ProcessMessages ein neuer Timer-Event ausgelöst wird, während der alte noch läuft.
Delphi-Quellcode:
procedure TMyForm.MyTimerTimer(Sender);
begin
// Code
Application.ProcessMessages;
// mehr Code
Application.ProcessMessages;
// noch mehr Code
end;
Jedes Application.ProcessMessages kann dazu führen, dass der Timer neu ausgelöst wird, wenn der Code länger läuft als das Timer-Intervall.
Dabei läuft dann auch der Stack ganz langsam voll. Je kürzer das Intervall, desto schneller.