Im, использующий MVVM Light Messenger в моем приложении WPF, и что-то не работает должным образом.MVVM Light Messeging issue
модель моего вида с маркером. im, используя «длинные» объекты в качестве токенов. мой код зарегистрирован, например, с токеном 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);
}
Я всегда зарегистрироваться лексемы X перед полученным в моем sendTest, , но по какой-то причине , иногда, когда вызывается sendTest (X), его не принимается.
У любого есть идеи, что происходит?
Как выглядит остальная часть вашего класса? Как вы вводите мессенджера? –
проблемы оказываются в лямбда в действии, когда не используется локальная переменная в лямбде, это будет работать. Я нашел здесь соответствующий пример [link] (http://stackoverflow.com/questions/22613828/strange-behavior-with-actions-local-variables-and-garbage-collection-in-mvvm-li) –
О! Кажется, я понимаю, о чем вы говорите ... –