我正在开发一个大型WinForm应用程序并遇到一些内存泄漏。其中一个问题是关闭表单没有释放内存(我使用.NET Memory Profiler)。有些人建议应手动从表单中删除事件处理程序以防止内存泄漏。这是否意味着我需要删除表单关闭时由设计者创建的Load,Form_Closing事件处理程序?我使用的是.NET 4.5。谢谢!
答案 0 :(得分:-1)
没有。事件处理程序的关注点是执行处理程序的对象是由具有该方法的对象引用的,这意味着如果触发事件的对象最终会比具有处理程序的对象长得多,该对象具有处理程序无法清理。
对于触发事件的对象,其生命周期比处理事件的对象短得多,因此没有任何问题,因为处理事件的对象没有引发触发事件的对象。