2

想知道我是否可以停止一个演员而不必等待当前消息被处理,或者只是取消它。

这里解释了这样做的方法

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

但是它们都在等待当前消息被处理。

Stop() 演员:

在处理完当前消息后立即停止actor。

杀死演员:

这会抛出一个 ActorKilledException ,它将被记录和处理。Actor 将在处理完当前消息后立即停止。

向演员发送 PoisonPill:

Actor 将完成当前在其邮箱中的消息的处理,然后停止。

4

1 回答 1

4

我会质疑为什么你在演员消息接收中有一个长时间运行的过程。最好将任何可能需要一些时间并且您希望能够在消息接收中取消的代码放入任务中。

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

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

于 2016-10-27T11:14:05.000 回答