我是MVVM Light的新手,我觉得我遇到了意想不到的行为。
使用内存分析器我注意到在视图模型上调用清理后,它扩展了ViewModelBase并注册为多个消息类型的接收者,所有WeakAction实例仍在内存中。
我看到ViewModelBase.Cleanup()应该完全取消注册视图模型作为邮件收件人,但我也看到Messenger.Unregister(对象收件人)不会调用RequestCleanup(),而所有其他Unregister重载都会。 在我的视图模型的清理覆盖中显式调用RequestCleanup方法似乎可以解决问题,因为所有WeakAction实例几乎都会立即从内存中释放。
有人可以告诉我这是预期的行为还是错误?