MVVM Light Messenger 接收方法

5
我正在使用MVVM Light在两个ViewModel之间发送消息。在接收ViewModel中,我尝试以下操作:
Messenger.Default.Register<NotificationMessage>(this, async (msg) => {
    await HandleMessage(msg);
});

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

第一次发送消息(通过按钮点击),异步方法会运行。下一次发送消息,什么都不会发生-方法不会被调用(通过断点检查)。
在Register方法中允许这样使用异步吗?
有什么解决方法?
1个回答

5

我认为在处理异步事件时,需要使用 void。

请尝试以下操作:

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

请记住,在异步 void 方法中要避免异常,因为它们无法被捕获。 - Tseng

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接