2015-11-06 68 views
4

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

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

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

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

以这种方式在Register方法上允许异步吗?

什么是解决方法?

回答

3

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

请尝试以下

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

请记住,你必须避免异步void的方法内部例外,因为它们不能被捕获 – Tseng