@Olli: Die
Unit SvcMgr ist von Borland!
Zum Prinzip:
Delphi geht davon aus, dass der Thread so lange läuft, bis der Dienst angehalten/beendet wird.
Also solltest du keinen Timer verwenden sondern einfach eine Endlosschleife, in der du mit Sleep oder WaitForSinlgeObject/WaitForMultipleObjects auf das nächste Ereignis wartest.
[jetzt muss ich erst noch ein bisschen lesen...]
Also: du packst einfach alles in OnExecute, in der Art:
Delphi-Quellcode:
procedure TService2.ServiceExecute(Sender: TService);
begin
while not Terminated do
try
AssignFile(txt_logfile, 'sensor.log');
Append(txt_logfile);
DateSeparator:='/';
Writeln(txt_logfile, FormatDateTime('yyyy/mm/dd hh:nn:ss',Now));
Flush(txt_logfile);
CloseFile(txt_logfile);
Sleep(1000);
ServiceThread.ProcessRequests(False);
except
end;
end;