WPF中的Actor系统生存期

时间:2016-05-11 01:56:55

标签: c# wpf akka.net

在过去,使用控制台应用程序,我保持Akka.NET actor系统活着如下:

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

        using (var actorSystem = ActorSystem.Create("ExampleSystem")) {
            var exampleActor = actorSystem.ActorOf(Props.Create(() => new ExampleActor()), name: "Example");
            Console.WriteLine("Akka.NET ActorSystem is now running, press any key to shut down");

            Console.ReadKey();
            actorSystem.Shutdown();
            actorSystem.AwaitTermination(timeout: TimeSpan.FromSeconds(5));
        }
    }
}

没有Console.ReadKey(),管理WPF应用程序的actor系统生命周期的正确方法是什么?

奖励积分:我已经听说Shutdown和AwaitTermination已经过时,但我不确定新的最佳做法

1 个答案:

答案 0 :(得分:0)

目前,如果您希望关闭ActorSystem,则应使用ActorSystem.Terminate(),这会在关闭完成后返回Task完成。

ActorSystem上还有另一个属性WhenTerminated,它看起来只存在,以便您可以在需要时访问终止任务,而不会告诉系统终止。

在您的示例中,Console.ReadKey()用于阻止和阻止进程结束,这在WPF应用程序中是不必要的。如果您不关心系统状态,可以让您的wpf应用程序关闭,或者如果您需要系统干净地关闭,则终止并等待终止任务完成。