Nunja, TimerTimer() wird ja wissen, wenn ein Fehler auftaucht, man müßte also die Bedingung nur so schreiben:
Delphi-Quellcode:
while ((not Terminated) and TimerTimer(self)) do
Sleep(0);
TimerTimer gibt also einen Boolean-Wert zurück (True = Erfolg, False = Fehler) und Sleep(0) verbessert ein wenig das Laufzeitverhalten deines Dienstes, weil so die CPU-Auslastung die dein Dienst erzeugt ein wenig runtergenommen wird. Sleep(0) gibt Rechenzeit an den nächsten Thread in der Zeitscheibe ab.