我正在使用Josh Smith的MVVM Foundation项目Messenger类,并且有一个关于取消订阅消息的问题。目前我有多个ViewModel将消息注册为字符串,例如我有 -
ViewModelA - 注册消息“A” ViewModelB - 注册消息“A”
因此两个注册的消息都具有相同的字符串。
我的问题是,当ViewModel关闭时(假设多个ViewModel可以具有相同的消息字符串),从ViewModel实例取消注册特定消息的最佳方法是什么。
干杯,
添
答案 0 :(得分:2)
Messenger类的全部关键是它只包含对订阅者(“同事”)的弱引用,因此如果关闭ViewModel,它将在垃圾收集后立即停止接收消息。
如果等待垃圾收集仍然不够好,你可以尝试强制垃圾收集。有关详细信息,请参阅this link。
我能想到的唯一其他选择是继承Messenger
并编写自己的Unregister()
方法。