Freigeben über


Benachrichtigungen

Es ist oftmals praktisch, auf Zustandsänderungen reagieren zu können. Für alle Rückrufe gelten die rundenbasierten Garantien von Orleans. Weitere Informationen finden Sie auch im Abschnitt zu Parallelitätsgarantien.

Nachverfolgen des bestätigten Zustands

Diese Methode kann durch JournaledGrain<TGrainState,TEventBase>-Unterklassen außer Kraft gesetzt werden, um über Änderungen am bestätigten Zustand benachrichtigt zu werden:

protected override void OnStateChanged()
{
   // read state and/or event log and take appropriate action
}

OnStateChanged wird aufgerufen, wenn der bestätigte Zustand aktualisiert wird. Das bedeutet, dass sich die Versionsnummer erhöht. Mögliche Szenarien hierfür:

  1. Eine neuere Version des Zustands wurde aus dem Speicher geladen.
  2. Ein Ereignis, das von dieser Instanz ausgelöst wurde, wurde erfolgreich in den Speicher geschrieben.
  3. Es wurde eine Benachrichtigungsmeldung von einer anderen Instanz empfangen.

Hinweis: Alle Grains haben zunächst die Version 0, bis das anfängliche Laden aus dem Speicher abgeschlossen ist. Das bedeutet, dass OnStateChanged() aufgerufen wird, wenn das anfängliche Laden mit einer Version größer 0 abgeschlossen wird.

Nachverfolgen des vorläufigen Zustands

Diese Methode kann durch JournaledGrain-Unterklassen außer Kraft gesetzt werden, um über Änderungen am vorläufigen Zustand benachrichtigt zu werden:

protected override void OnTentativeStateChanged()
{
   // read state and/or events and take appropriate action
}

OnTentativeStateChanged() wird aufgerufen, wenn sich der vorläufige Zustand ändert – also wenn sich die kombinierte Sequenz (ConfirmEvents + UnconfirmedEvents) ändert. Ein Rückruf an OnTentativeStateChanged() erfolgt insbesondere immer während RaiseEvent.