繁体   English   中英

如何在MVVM中使用akka.net的参与者?

[英]How to use actors of akka.net in MVVM?

在控制台应用程序或单元测试中使用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")); 
}
  1. 直接致电负责人,答案发送给死信。 还有更复杂的例子吗?
  2. 将收到答案并可以调用mainviewmodel的回调,但是给我InvalidOperationException“从无效线程中调用”
  3. 似乎是获得通话结果的唯一方法

我想知道如何通过Actor消息填充ListViews或ComboBoxes。

默认情况下,大多数Akka actor安排在后台线程中,因此它们无法在UI上进行直接更新(仅允许应用程序的UI /主线程执行此操作)。 如果要在UI线程上生成actor,则需要将其配置为使用SynchronizedDispatcher

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM