【问题标题】:MVVM Light Messenger Receive MethodMVVM Light Messenger 接收方法
【发布时间】:2016-02-07 02:39:18
【问题描述】:

我正在使用 MVVM Light 在两个 ViewModel 之间发送消息。在接收虚拟机中,我正在尝试以下操作

Messenger.Default.Register<NotificationMessage>(this, async (msg) => {
    await HandleMessage(msg);
});

private async Task HandleMessage(NoficationMessage message)
{
    ... code using await
}

第一次发送消息时(通过单击按钮),异步方法运行。下次发送消息时,什么也没有发生 - 方法不会被调用(通过断点检查)。

Register 方法是否允许以这种方式异步?

什么是解决方法?

【问题讨论】:

    标签: c# wpf mvvm mvvm-light


    【解决方案1】:

    我相信对于异步事件,你需要 void。

    试试下面的

    Messenger.Default.Register<NotificationMessage>(this, HandleMessage);
    private async void HandleMessage(NotificationMessagemessage)
    {
        ... code using await
    }
    

    【讨论】:

    • 请记住,您必须避免在异步 void 方法中出现异常,因为它们无法被捕获
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-16
    • 2011-07-12
    相关资源
    最近更新 更多