在过去,使用控制台应用程序,我保持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已经过时,但我不确定新的最佳做法)
答案 0 :(得分:0)
目前,如果您希望关闭ActorSystem
,则应使用ActorSystem.Terminate()
,这会在关闭完成后返回Task
完成。
ActorSystem上还有另一个属性WhenTerminated
,它看起来只存在,以便您可以在需要时访问终止任务,而不会告诉系统终止。
在您的示例中,Console.ReadKey()
用于阻止和阻止进程结束,这在WPF应用程序中是不必要的。如果您不关心系统状态,可以让您的wpf应用程序关闭,或者如果您需要系统干净地关闭,则终止并等待终止任务完成。