我在MSDN中读过要求取消订阅对象必须能够从内存中处理的每个事件。我总是使用 - =删除对象内部事件的所有引用(如MSDN show)。
现在,我必须维护代码并且它有一些内存泄漏。我看到前一个开发人员只是将所有事件订阅的对象设置为NULL而不是 - =每个事件方法。
示例:
_watcher.Changed += new ...
_watcher.Created += new ...
_watcher.Deleted += ..
//later.
_watcher = NULL;
这是一个好方法还是将变量保存在内存中?
答案 0 :(得分:6)
如果没有对_watcher
的其他引用,则无需删除事件处理程序以避免内存泄漏。
作为习惯问题,我倾向于明确删除事件处理程序。