MVVM Light Messenger接收方法

本文关键字:方法 Messenger Light MVVM | 更新日期: 2023-09-27 18:20:41

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

Messenger.Default.Register<NotificationMessage>(this, async (msg) => {
    await HandleMessage(msg);
});
private async Task HandleMessage(NoficationMessage message)
{
    ... code using await
}

第一次发送消息(通过单击按钮)时,异步方法将运行。下次发送消息时,不会发生任何事情——不会调用该方法(通过断点进行检查)。

是否允许以这种方式对Register方法执行异步操作?

什么是变通办法?

MVVM Light Messenger接收方法

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

尝试以下

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