Einzelnen Beitrag anzeigen

Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#1

mehrere Intervallaufgaben in einem Windows Dienst

  Alt 15. Nov 2009, 18:48
Hi Leute,

ich hatte neulich eine Diskusion mit einem Bekannten,
darin ging es darum wie in einem Dienst am "besten/elegantesten"
mehrere Aufgaben(seperate Threads) verwalten/starten kann.

Bei dieser Diskusion sind einige verschiedene Möglichkeiten hervorgekommen.

1. Ganz simpel Timer auf die Form ziehen, Intervall z.B. 10 Sekunden, im OnTimer Event prüfen welche Threads gestartet werden müssen.

2. Anstatt des Timers einen "Master-Thread" der alle X-Sekunden prüft, ob andere Threads gestartet werden müssen

3. threads Bei Dienststart erzeugen mit:
Delphi-Quellcode:
repreat
  // doTask;
until (Terminated) or (WaitForSingleObject(hCloseEvent, INTERVALL) = WAIT_OBJECT_0);
4. Innerhalb des OnExecute des Threads mit:
Delphi-Quellcode:
While not Terminated do begin
  ServiceThread.ProcessRequests(True);
  if (dtLastExecuteTakkXYZ + (iIntervalMinuteValue/24/60)) < dNow then begin
    // doTaskXYZ CreateThreadXYZ
  end;
end;
und es gibt noch einige Möglichkeiten mehr, mich würde mal interessieren welche Varianten/Alternativen Ihr verwendet/verwenden würdet.

In meinem speziellen Fall, gibt es 5-8 Threads verschiedene Threads die in verschiedenen Intervallen parallel laufen sollen.
Manche Threads dauern nur ein paar Sekunden(z.B. aufräumen bestimmter Verzeichnisse/FTP Uploads),
andere dauern mehrere Minuten/halbe Stunde(Import von großen Dateien).
Außerdem schliessen sich 2 Threads gegenseitig aus, d.h. es darf nur ein der beiden Threads zur selben Zeit laufen/arbeiten.

Also Jungs dann bin ich mal auf eure Vorschläge/Ideen gespannt,
danke im vorraus,

Greetz DataCool
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.
  Mit Zitat antworten Zitat