我有Receiveable Actor可切換行爲,由Become()方法切換。爲了監控兒童演員,我必須添加接收< Terminated>調用每個狀態方法。如何減少ReceiveActor的代碼重複
例如,我有
public class SomeActor : ReceiveActor
{
public SomeActor()
{
// create child actors
Become(Ready);
}
private void Ready()
{
Receive<InitMessage>(m =>
{
Become(Working1);
});
Receive<Terminated>(m =>
{
// duplicated termination stuff
Become(Terminated);
});
}
private void Working1()
{
Receive<InitMessage>(m =>
{
Become(Working2);
});
Receive<Terminated>(m =>
{
// duplicated termination stuff
Become(Terminated);
});
}
private void Working2()
{
Receive<InitParcerMessage>(m =>
{
Become(Working1);
});
Receive<Terminated>(m =>
{
// duplicated termination stuff
Become(Terminated);
});
}
private void Terminated()
{
// do some stuff
}
}
很難理解你想要達到的目標。在akka監視/觀看演員是一個術語與使用'Context.Watch(actorRef)'檢查它的活力有關。請描述一下你真正想要在這裏監控什麼。 – Horusiath
你可以觸發一個事件並訂閱所有的孩子,讓他們知道什麼時候你想在終止的時候,在某個中間點等處理終止方法。 – Zinov
@Zinov你的意思是簡單的c#事件嗎? – bonzaster