【发布时间】:2016-11-11 08:06:52
【问题描述】:
我有具有可切换行为的接收 Actor,由 become() 方法切换。为了监控子演员,我必须在每个状态方法中添加 Receive
例如,我必须将其粘贴到 Ready、Working1 和 Working2 方法中
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)检查其活跃度相关的术语。请在此处描述您真正想要监控的内容。 -
您可以触发一个事件并为所有子级订阅它,让他们知道您何时要在成为结束时处理 Terminated 方法,在某个中间点等
-
@Zinov 你的意思是简单的 c# 事件?
-
是的@bonzaster 它也应该以这种方式工作,最后事件是委托类型,因此您可以拨打电话