Share via


通知

回應狀態變更的能力通常很方便。 所有回撥都受限於 Orleans' 回合式保證;另請參閱並行保證一節。

追蹤已確認的狀態

若要收到已確認狀態變更的通知,JournaledGrain<TGrainState,TEventBase> 子類別可以覆寫此方法:

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

每當確認的狀態更新時 (也就是版本號碼增加),就會呼叫 OnStateChanged。 發生的時機為

  1. 從儲存體載入較新版本的狀態。
  2. 這個執行個體所引發的事件已成功寫入儲存體。
  3. 收到來自其他執行個體的通知訊息。

請注意,由於所有粒紋一開始都有版本零,直到儲存體的初始負載完成為止,這表示每當初始負載完成,且版本大於零時,就會呼叫 OnStateChanged()

追蹤暫訂狀態

若要收到暫訂狀態變更的通知,JournaledGrain 子類別可以覆寫此方法:

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

每當暫訂狀態變更 (亦即,如果結合序列 (ConfirmedEvents + UnconfirmedEvents) 變更) 時呼叫 OnTentativeStateChanged()。 特別是,對 OnTentativeStateChanged() 的回撥一律會在 RaiseEvent 期間發生。