在控制台应用程序或单元测试中使用akka.net似乎很容易。
但是我想尝试一些简单的登录方法的参与者:打开启动画面,发送登录命令,在登录正常后关闭启动画面。现在,答案将发送给演员。等待Ask呼叫的答案将阻止UI。 MainViewModel已经从基类派生,因此使其成为actor并不是一种选择。
public void OnStartupCommand(EventArgs args)
{
_splashScreen = new SplashScreenView();
_splashScreen.Show();
// [1]
_actorSystem.ActorSelection("/user/system").Tell(new Login("Me"));
// [2]
var mainWindowActor =_actorSystem.ActorOf(Props.Create(() => new
MainWindowActor(this)), "mainwindow");
mainWindowActor.Tell(new Login("me"));
// [3]
var result = await _actorSystem.ActorSelection("/user/system").Ask(new Login("me"));
}
我想知道如何通过Actor消息填充ListViews或ComboBox。
答案 0 :(得分:0)
默认情况下,大多数akka actor安排在后台线程中,因此它们无法在UI上进行直接更新(仅允许应用程序的UI /主线程执行此操作)。如果要在UI线程上生成actor,则需要将其配置为使用SynchronizedDispatcher。