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.