C# 是否需要在关闭窗体时删除Load、Form_关闭事件处理程序以防止内存泄漏?

C# 是否需要在关闭窗体时删除Load、Form_关闭事件处理程序以防止内存泄漏?,c#,winforms,memory-leaks,C#,Winforms,Memory Leaks,我正在开发一个大型WinForm应用程序,遇到一些内存泄漏。其中一个问题是关闭表单并没有释放内存(我使用了.NET内存分析器)。一些人建议应该手动从表单中删除事件处理程序,以防止内存泄漏。这是否意味着我需要删除设计器在关闭窗体时创建的加载、窗体关闭事件处理程序?我在使用.NET4.5。谢谢大家! 否。事件处理程序的问题是,执行处理程序的对象被具有方法的对象引用,这意味着如果触发事件的对象最终将比具有处理程序的对象存活更长的时间,则无法清除具有处理程序的对象 触发事件的对象的生存期比处理事件的对象

我正在开发一个大型WinForm应用程序,遇到一些内存泄漏。其中一个问题是关闭表单并没有释放内存(我使用了.NET内存分析器)。一些人建议应该手动从表单中删除事件处理程序,以防止内存泄漏。这是否意味着我需要删除设计器在关闭窗体时创建的加载、窗体关闭事件处理程序?我在使用.NET4.5。谢谢大家!

否。事件处理程序的问题是,执行处理程序的对象被具有方法的对象引用,这意味着如果触发事件的对象最终将比具有处理程序的对象存活更长的时间,则无法清除具有处理程序的对象

触发事件的对象的生存期比处理事件的对象短得多,这根本没有问题,因为处理事件的对象没有对触发事件的对象的引用