Der Timer braucht ja ein Window-
Handle mit dem er dann läuft. Deswegen scheidet die Möglichkeit schonmal aus, einen Timer im Thread zu erstellen.
Ich habe das in einem Projekt bei mir genauso gemacht. In einer Schleife im Thread.Execute wird eine Funktion aufgerufen, die z.B. Daten einliest, und wenn die Funktion durch ist, dann rufe ich ein Sleep auf, und warte einige Zeit. Wenn das Sleep zurück kommt, dann läuft die Schleife weiter. Und damit wäre Dein Thread autark und läuft eigenständig in einer Schleife.
Irgendwie sowas:
Delphi-Quellcode:
procedure TMainThread.Execute;
begin
FreeOnTerminate := False;
Try
While Not Terminated
do
Begin
meineEinleseFunktion;
// <---- Hier wird die Funktion aufgerufen, die die Daten einlesen soll
Sleep(5000);
End;
Except
On E:
Exception do ;
// TODO: Exception logging...
End;
Terminate;
end;