2015-11-06 80 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

相關問題