【发布时间】:2012-02-15 09:42:58
【问题描述】:
我不想浏览所有事件退订内存泄漏帖子,看看是否有任何处理异常的帖子,所以我正在发一个新帖子。
如果我注册一个带有事件的函数并且在我取消注册之前发生了异常,这会导致内存泄漏吗?我在调用函数中有一个 try/catch,但在我连接/取消连接事件的函数中没有,如果我不需要它,我宁愿没有 try/catch。
【问题讨论】:
标签: .net events exception memory-leaks
我不想浏览所有事件退订内存泄漏帖子,看看是否有任何处理异常的帖子,所以我正在发一个新帖子。
如果我注册一个带有事件的函数并且在我取消注册之前发生了异常,这会导致内存泄漏吗?我在调用函数中有一个 try/catch,但在我连接/取消连接事件的函数中没有,如果我不需要它,我宁愿没有 try/catch。
【问题讨论】:
标签: .net events exception memory-leaks
对于大多数订阅方法,未取消订阅的事件订阅者的生命周期将延长至事件源的生命周期。如果事件源是短暂的,这将不是问题。如果事件源是长期存在的,这可能是一个大问题。最好的习惯用法通常是在 IDisposable 中取消连接事件。如果使用“使用”块,则会调用 Dispose 方法,确保事件被取消订阅。
【讨论】: