Dela via


Meddelanden

Det är ofta praktiskt att ha möjlighet att reagera på tillståndsändringar. Alla återanrop omfattas av Orleans" turbaserade garantier; se även avsnittet om samtidighetsgarantier.

Spåra bekräftat tillstånd

För att meddelas om ändringar i det bekräftade tillståndet JournaledGrain<TGrainState,TEventBase> kan underklasser åsidosätta den här metoden:

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

OnStateChanged anropas när det bekräftade tillståndet uppdateras, d.v.s. versionsnumret ökar. Detta kan inträffa när

  1. En nyare version av tillståndet lästes in från lagringen.
  2. En händelse som skapades av den här instansen har skrivits till lagring.
  3. Ett meddelande togs emot från någon annan instans.

Observera att eftersom alla korn inledningsvis har version noll, tills den första inläsningen från lagringen har slutförts, innebär det att OnStateChanged() anropas när den inledande belastningen slutförs med en version som är större än noll.

Spåra preliminärt tillstånd

För att meddelas om ändringar i det preliminära tillståndet JournaledGrain kan underklasser åsidosätta den här metoden:

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

OnTentativeStateChanged() anropas när det preliminära tillståndet ändras, dvs. om den kombinerade sekvensen (ConfirmedEvents + UnconfirmedEvents) ändras. I synnerhet sker en återanrop till OnTentativeStateChanged() alltid under RaiseEvent.