不,删除此代码是不安全的.为了正确释放它们所持有的非托管资源,有几个组件依赖于这种模式.如果您删除此代码,您的应用程序可能会在95%的时间内正常工作.但是,5%的案例会显示为资源泄漏,可能是内存泄漏,非确定性错误......总的来说,很难追查问题.
处理可支配资源的最佳方法是在您不再使用它的瞬间处置.遵循这种做法将为您节省许多麻烦.删除此代码采用完全相反的方法.
这篇关于SO的帖子包含了更详细的解释:我什么时候应该在.NET中处理我的对象?
不,删除此代码是不安全的.为了正确释放它们所持有的非托管资源,有几个组件依赖于这种模式.如果您删除此代码,您的应用程序可能会在95%的时间内正常工作.但是,5%的案例会显示为资源泄漏,可能是内存泄漏,非确定性错误......总的来说,很难追查问题.
处理可支配资源的最佳方法是在您不再使用它的瞬间处置.遵循这种做法将为您节省许多麻烦.删除此代码采用完全相反的方法.
这篇关于SO的帖子包含了更详细的解释:我什么时候应该在.NET中处理我的对象?
如果你有可能在表单上使用类似System.Windows.Forms.Timer的东西,那么绝对不要删除它.并且始终存在这种可能性.
这个代码将在表单关闭时处理计时器,如果你不处理计时器,它将继续运行.我已经接管了几个代码,这些代码已经引入了这种类型的bug(在.NET 2.0之前,这种机制不能很好地工作),并且由于定时器在应该更新的表单之后运行很久而导致的间歇性性能问题已经关闭可能是一个真正的痛苦.
删除它没有任何实际好处 - 如果没有控件将自己添加到组件列表中,那么components.Dispose()将很容易运行.如果控件已经将自己添加到列表中那么那是因为它们应该被处理掉.