通知

对状态更改做出反应通常很方便。 所有回调都受“基于轮次的保证”的约束 Orleans;另请参阅有关 并发保证的部分。

跟踪确认状态

若要收到对确认状态的任何更改的通知, JournaledGrain 子类可以重写此方法:

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
}

OnTentativeStateChanged 每当暂定状态更改时调用,即当组合序列 (ConfirmedEvents + UnconfirmedEvents) 发生更改时。 具体而言,回调 OnTentativeStateChanged() 始终发生在 RaiseEvent