在弱事件模式中使用RemoveHandler有什么用?

时间:2017-12-12 08:55:35

标签: c# wpf weak-references

根据Microsoft doc

  

只要听众需要,就可以使用弱事件模式   注册一个事件,但监听器没有明确知道何时   取消注册

A sample code here说明在使用WeakEventManager时,未明确调用RemoveHandler 会导致内存泄漏。

所以我的问题是,为什么方法RemoveHandler甚至存在于WeakEventManager类中?这不是完全没必要吗?什么时候需要?

1 个答案:

答案 0 :(得分:2)

  

不完全没必要吗?

没有。如果没有RemoveHandler方法,您应该如何(明确地)取消订阅?

  

什么时候需要?

每当您想要明确地取消订阅事件订阅时。

如果您不打电话给RemoveHandler,事件处理将继续,直到垃圾收集器收集监听器。