Hola, el problema lo tienes en el bucle principal:
Código Delphi
[-]while not Terminated do
begin
ServiceThread.ProcessRequests(True); Timer1.Enabled := False;
end;
Procesas lo que hay pendiente y paras el timer, con lo que el timer no llega a ejecutarse. Debes parar el timer fuera del bucle y controlar la terminación del servicio desde la ejecución del Timer
Código Delphi
[-]while not Terminated do
begin
ServiceThread.ProcessRequests(True); end;
Timer1.Enabled := False;
Tienes un ejemplo aqui:
http://www.clubdelphi.com/foros/show...31&postcount=6