You are here

Arbeitsweise

Sobald der Dienst SchedSvc started, scannt er die Registry unter dem Schlüssel HKLM/Software/OGroeger/SchedSvc nach Tasks . Für jeden Task, den er fehlerfrei laden kann, erzeugt er einen neuen Thread. In Abhängigkeit von dem Inhalt des Registry-Werts IntervalInMs erzeugt er entweder einen PeriodicThread (IntervalInMs > 0) oder einen PhoenixThread (IntervalInMs = 0).


PeriodicThread

Ein PeriodicThread funktioniert folgendermassen:

  • Er erzeugt einen WaitableTimer mit der gegebenen Intervallänge.
  • Er startet diesen WaitableTimer.
  • Er wartet sowohl auf ein Signal von dem Timer als auch auf ein Signal für das Beenden des Dienstes.
  • Wenn der Timer ein Signal sendet, dann erzeugt der Thread einen neuen Prozess mit dem gegebenen Programmnamen und speichert das Prozess-Handle.
  • Wenn das Signal für das Beenden des Dienstes eintrifft, dann zerstört der Thread den Timer und beendet jeden Prozess für den er einen Prozess-Handle besitzt und der noch nicht beendet wurde.
  • Er beendet sich selbst.

PhoenixThread

Der PhoenixThread funktioniert folgendermassen:

  • Er erzeugt einen neuen Prozess mit dem gegebenen Programmnamen.
  • Er wartet darauf, dass der neue Prozess beendet wird und auf ein Signal für das Beenden des Dienstes.
  • Wenn der Prozess beendet wurde, erzeugt der Thread einen neuen Prozess mit dem gegebenen Programmnamen.
  • Wenn das Signal eintrifft, dass der Dienst beendet werden soll, dann stoppt der Thread den gestarteten Prozess.
  • Er beendet sich selbst.