在我的WPF應用程序中使用MVVM Light Messenger,並且某些功能無法按預期工作。MVVM Light Messeging問題
我的視圖模型用令牌註冊。即時通訊使用'長'對象作爲標記。 我的代碼例如用令牌5註冊,然後將請求發送到服務。 當服務回覆它在我的第二個視圖模型中處理,然後它將發送具有相同標記的消息。
當我調試和打印註冊和發送的消息似乎確定,但由於某種原因並不是所有的信使都收到註冊。
我的登記和處理如下所示:
private void registerTest()
{
long tokenId = getNextToken();
ExtraData data = new ExtraData();
Messenger.Default.Register<MyMsg>(this, tokenId, (m) => recieve(m,data));
}
private void receive(MyMsg m,ExtraData data)
{
Messenger.Default.Unregister<MyMsg>(this, m.tokenId);
}
我發送如下所示:
private void sendTest(long tokenId)
{
Messenger.Default.Send(new MyMsg(tokenId), tokenId);
}
我總是它在我的sendTest, 收到過,但出於某種原因與令牌X註冊,有時當sendTest(X)被調用時,它沒有被接收。
任何人有任何想法發生了什麼?
你班上的其他人看起來像什麼?你如何注入信使? – 2014-10-01 12:39:01
問題似乎是在lambda中的動作,當不使用lambda中的局部變量時,這將工作。我在這裏找到一個相關的例子[鏈接](http://stackoverflow.com/questions/22613828/strange-behavior-with-actions-local-variables-and-garbage-collection-in-mvvm-li) – 2014-10-01 12:55:48
哦!我想我明白你在說什麼...... – 2014-10-01 13:37:12