Die Standardimplementierung dieser Methoden leer. Sie können bei Bedarf überschrieben werden.

BeforeProcessing

protected virtual void BeforeProcessing(bool resume) { }

Diese Methode kann überschrieben werden, um Arbeiten vor der eigentlichen Hauptaufgabe zu erledigen. Diese Methode wird exakt einmal bei ersten Start des Workers mit false aufgerufen. Falls der Worker, warum auch immer, neu gestartet wird, erfolgt der Aufruf mit true.

Typischerweise wird man hier bei !resume MaxProgress füllen wollen, sofern die nicht schon bei der Erzeugung des Work-Items (ohne Datenbankabfrage) gefüllt werden konnte.

AfterProcessing

protected virtual void AfterProcessing(Exception exception) { }

Diese Methode wird nach der eigentlichen Arbeit exakt einmal aufgerufen. Das gilt sowohl für den Fall, dass die Arbeit erfolgreich beendet wurde, als auch für den Fall, dass es zu einem Fehler (unbehandelte Ausnahme) kam. Den Unterschied erkennt man am State und ggf. am Inhalt von ExeptionDuringRun.

Hier sollten keine wesentlichen Aufgaben mehr erledigt werden, da nur ein geringes Zeitkontingent von einer Minute zur Verfügung steht.

BeforeSuspend

protected virtual void BeforeSuspend() { }

Wenn die Arbeit unterbrochen wird, z.B. weil eine Zeitüberschreitung erfolgt ist, dann wird die Methode BeforeSuspend aufgerufen.

Auch hier sollten keine wesentlichen Aufgaben erledigt werden, da nur ein geringes Zeitkontingent von einer Minute zur Verfügung steht.

OnUserCancelled

protected virtual void OnUserCancelled() { }

Wenn ein Work-Item abgebrochen wird, wird der aktuelle Datensatz noch fertig bearbeitet und dann diese Methode aufgerufen. Der Aufruf erfolgt auch dann, wenn der Abbruch vor dem Start erfolgt und BeforeProcessing noch nie aufgerufen wurde. Den Unterschied erkennt man am State, der in letzterem Fall Removed ist, sonst ist er Cancelled.

Auch hier sollten keine wesentlichen Aufgaben erledigt werden, da nur ein geringes Zeitkontingent von einer Minute zur Verfügung steht. Falls größere Aufräumarbeiten erforderlich sind, sollten diese in einem eigenen Aufräum-Worker als Nachfolger gestartet werden.

AfterProcessingOrm

Diese Methode wird nach jedem Aufruf von ProcessSingleOrm aufgerufen, und zwar unabhängig davon, ob eine Exception aufgetreten ist. Über den Rückgabewert von AfterProcessingOrm kann man steuern, ob die Schleife über die einzelnen Orms ganz normal fortgesetzt werden soll (Continue), oder ob sie beendet werden soll. Beenden erfolgt über Finish oder Retry, die sich darin unterscheidet, dass im Falle einer Wiedereinplanung, um die sich die überladene Klasse selbst kümmern muss, das aktuelle ORM erneut aufruft, oder beim nächsten fortsetzt.