Condividi tramite


Notifications

Spesso è utile avere la possibilità di reagire ai cambiamenti di stato. Tutti i callback sono soggetti a garanzie basate su turni di Orleans. Vedere anche la sezione relativa a Garanzie di concorrenza.

Tenere traccia dello stato confermato

Per ricevere una notifica delle modifiche apportate allo stato confermato, le sottoclassi JournaledGrain<TGrainState,TEventBase> possono eseguire l'override di questo metodo:

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

Viene chiamato OnStateChanged a ogni aggiornamento dello stato confermato, ossia il numero di versione aumenta. Questa situazione può verificarsi quando:

  1. Una versione più recente dello stato è stata caricata dalla risorsa di archiviazione.
  2. Un evento generato da questa istanza è stato scritto correttamente nella risorsa di archiviazione.
  3. Un messaggio di notifica è stato ricevuto da un'altra istanza.

Si noti che tutti i grani inizialmente hanno la versione zero fino al completamento del caricamento iniziale dall'archiviazione e questo significa che OnStateChanged() viene chiamato ogni volta che il caricamento iniziale viene completato con una versione maggiore di zero.

Tenere traccia dello stato provvisorio

Per ricevere una notifica delle modifiche apportate allo stato provvisorio, le sottoclassi JournaledGrain possono eseguire l'override di questo metodo:

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

OnTentativeStateChanged() viene chiamato a ogni cambiamento dello stato provvisorio, ad esempio se cambia la sequenza combinata (ConfirmedEvents + UnconfirmedEvents). In particolare, un callback a OnTentativeStateChanged() avviene sempre durante RaiseEvent.