通知
回應狀態變更的能力通常很方便。 所有回撥都受限於 Orleans' 回合式保證;另請參閱並行保證一節。
追蹤已確認的狀態
若要收到已確認狀態變更的通知,JournaledGrain<TGrainState,TEventBase> 子類別可以覆寫此方法:
protected override void OnStateChanged()
{
// read state and/or event log and take appropriate action
}
每當確認的狀態更新時 (也就是版本號碼增加),就會呼叫 OnStateChanged
。 發生的時機為
- 從儲存體載入較新版本的狀態。
- 這個執行個體所引發的事件已成功寫入儲存體。
- 收到來自其他執行個體的通知訊息。
請注意,由於所有粒紋一開始都有版本零,直到儲存體的初始負載完成為止,這表示每當初始負載完成,且版本大於零時,就會呼叫 OnStateChanged()。
追蹤暫訂狀態
若要收到暫訂狀態變更的通知,JournaledGrain
子類別可以覆寫此方法:
protected override void OnTentativeStateChanged()
{
// read state and/or events and take appropriate action
}
每當暫訂狀態變更 (亦即,如果結合序列 (ConfirmedEvents + UnconfirmedEvents) 變更) 時呼叫 OnTentativeStateChanged()。 特別是,對 OnTentativeStateChanged()
的回撥一律會在 RaiseEvent 期間發生。