Akka.net如何在不等待当前消息完成的情况下阻止演员?

时间:2016-10-27 07:18:03

标签: c# akka.net actor-model

想知道我是否可以在不必等待处理当前消息的情况下阻止演员,或者只是取消它。

这里解释了这样做的方法

https://petabridge.com/blog/how-to-stop-an-actor-akkadotnet/

但是他们都在等待处理当前的消息。

停止()演员:

  

完成后立即停止演员   处理当前消息。

杀死演员:

  

这将抛出一个将被记录和处理的ActorKilledException。演员会   完成处理当前消息后立即停止。

向演员发送PoisonPill:

  

演员将完成处理   当前在其邮箱中的邮件,然后停止。

1 个答案:

答案 0 :(得分:3)

我会质疑为什么你在actor消息接收中有一个长时间运行的进程。最好的做法是放置任何可能需要一些时间的代码,并希望能够在接收消息时取消任务。

然后,演员将被释放并能够接受上面列出的其中一种停止方法的消息,并相应地终止任务。

此外,下一页的第4点显示了一些示例代码https://petabridge.com/blog/top-7-akkadotnet-stumbling-blocks/