Der Work-Manager bietet Standardmäßig keine solche Funktionalität. Allerdings kann man diese sehr leicht erreichen, indem die Methode WorkItemFinished überschieben wird.

protected override void WorkItemFinished
{
    base.WorkItemFinished();
    if (!HasSuccessor())
        AddSuccessor(PeriodicCheckInterval);
}

Diese Implementierung probiert zuerst die Standard-Restarts (über base.WorkItemFinished), nur wenn auf diese Weise nicht schon Neueinplanung erfolgte (!HasSuccessor()), plant sich das Work-Item nach dem Zeitintervall PeriodicCheckInterval wieder ein.

In diesem Beispiel ist die Periodizität eine konstante Pause. Mit anderen Überladungen von AddSuccessor können auch bestimmte Zeitpunkte ausgewählt oder aber das neu einzuplanende Work-Item vorher noch verändert werden.

Wiederkehrenden Worker bei Anwendungsstart initialisieren

Damit ein Wiederkehrender Prozess seine Arbeit aufnimmt, muss er einmalig explizit gestartet werden. Das kann z.B. beim Speichern einer zugehörigen Konfiguration erfolgen. Diese könnte sich aber durch einen Konfigurationsimport ändern.

Es empfiehlt sich, den Status von wiederkehrenden Workern beim Anwendungsstart einmalig zu aktualisieren. Dazu ist das Interface IInitializationEvent zu implementieren. Beispiel:

public class DeleteOldLogsWorkerTask : WorkItemBase, IInitializationEvent
{
    public void AfterStart()
    {
        Api.Worker.CreateOrUpdate(new DeleteOldLogsWorkerTask());
    }

Dem Beispiel liegt die Hypothese zugrunde, dass der Worker im Standard-Konstruktor einen geeigneten Ausführungszeitpunkt wählt.