Akka.NET Ask Task永远不会完成

Mat*_*son 4 c# akka.net

我可能做错了什么,但不明显.我有以下代码:

 namespace test
    {
        class Program
            {
             static void Main(string[] args)

                {
                    using (var system = ActorSystem.Create("MySystem"))
                    {
                        var testPassRetriever = system.ActorOf<PrintActor>();
                        var task = testPassRetriever.Ask<PrintActorMsg>(new PrintActorMsg());

                        // prevent the application from exiting before message is handled
                        task.Wait();
                        Console.WriteLine("Finished.");
                        Console.ReadLine();
                    }
                }
        }
        class PrintActorMsg{}

        class PrintActor : ReceiveActor
        {
            public PrintActor()
            {
             Receive<PrintActorMsg>(msg => Console.WriteLine("foo"));
            }
        }
}// namespace test
Run Code Online (Sandbox Code Playgroud)

问题是Ask返回的Task永远不会完成.其状态保持在等待激活状态."Foo"确实打印在命令行上,所以我知道actor正在处理Print消息.在重写的演员PrintMsg中我应该做些什么来标记完成的任务?

Mar*_*ijn 6

您使用ask模式,但从不发回消息.只有在从actor接收到消息时才会完成ask任务.(有时建议)告诉或者"即发即弃"模式不会这样做.

  • 我不得不改变PrintActor来调用Sender.Tell(new PrintActorMsg()); (3认同)