mvvm wpf messenger类,取消注册消息

时间:2010-06-28 06:47:34

标签: wpf mvvm messages

我正在使用Josh Smith的MVVM Foundation项目Messenger类,并且有一个关于取消订阅消息的问题。目前我有多个ViewModel将消息注册为字符串,例如我有 -

ViewModelA - 注册消息“A” ViewModelB - 注册消息“A”

因此两个注册的消息都具有相同的字符串。

我的问题是,当ViewModel关闭时(假设多个ViewModel可以具有相同的消息字符串),从ViewModel实例取消注册特定消息的最佳方法是什么。

干杯,

1 个答案:

答案 0 :(得分:2)

Messenger类的全部关键是它只包含对订阅者(“同事”)的弱引用,因此如果关闭ViewModel,它将在垃圾收集后立即停止接收消息。

如果等待垃圾收集仍然不够好,你可以尝试强制垃圾收集。有关详细信息,请参阅this link

我能想到的唯一其他选择是继承Messenger并编写自己的Unregister()方法。