c# - MVVM Light Messenger 接收方法

标签 c# wpf mvvm mvvm-light

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

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

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

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

这样在Register方法上允许async吗?

什么是解决方法?

最佳答案

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

尝试以下操作

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

关于c# - MVVM Light Messenger 接收方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33558500/

相关文章:

C# 4.0 异步任务结果

c# - IEnumerable<char> 的 Java 等效项

wpf - 从代码中获取 WPF 资源?

mvvm - 您如何处理 MVVM 中的更改跟踪?

c# - 在 linq 的帮助下顺序自动生成的 Id

c# - 网络应用程序的设计帮助?

wpf - F# WPF 事件 : "Block following this ' let' is unfinished. 需要一个表达式”

c# - 如何在 WPF Mvvm 中检索动态生成的 RadioButtons 的选定 RadioButton

c# - 在MVVM-WPF中更新DataContext的计时器

WPF:取消数据绑定(bind)列表框中的用户选择?