mvvm wpf мессенджер, отмена регистрации сообщений - PullRequest
1 голос
/ 28 июня 2010

Я использую класс Messenger проекта Джоша Смита, основанный Джошем Смитом, и у меня только что возник вопрос об отмене подписки на сообщения. На данный момент у меня есть несколько ViewModels, которые регистрируют сообщения в виде строк, например, у меня -

ViewModelA - регистры для сообщения "A" ViewModelB - регистры для сообщения "A"

Таким образом, оба зарегистрированных сообщения имеют одинаковую строку.

Мой вопрос, каков наилучший способ отменить регистрацию определенного сообщения в экземпляре ViewModel, когда эта ViewModel закрыта (учитывая, что несколько ViewModel могут иметь одну и ту же строку сообщения).

Приветствия

Тим.

1 Ответ

2 голосов
/ 28 июня 2010

Весь ключ к классу Messenger заключается в том, что он содержит только слабые ссылки на подписчиков («коллег»), поэтому, если вы закроете вашу ViewModel, он прекратит получать сообщения, как только будет собран мусор.

Если ожидание сбора мусора все еще недостаточно, вы можете попробовать принудительно выполнить сборку мусора. См. эту ссылку для получения дополнительной информации.

Единственная альтернатива, которую я могу придумать, - это создать подкласс Messenger и написать собственный метод Unregister().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...