CommonDialog组件应该被处置?

问题描述 投票:3回答:3

在此Docs关于对话框的示例中未使用代码块或Dispose方法。

但是为什么它尽管具有Dispose方法也没有被处置?

.net winforms idisposable
3个回答
2
投票

Hmya,不幸的是,这不是很清楚。 OpenFileDialog和朋友从Component类继承Dispose()。每个组件都必须实现Dispose(),因为表单的Dispose()方法会调用它。碰巧是有几个Component派生类具有不执行Dispose()方法的。对话框类就是这样,它们是对话框。对话框关闭时,它们会清理所有非托管资源。不需要其他帮助。

记录不正确。有点可见,MSDN库显示该方法是继承的,而不是被类覆盖。绕过继承的Component.Dispose()方法还是可以的,这仍然不是很明显。如果您不满意它,那么很多程序员都会感到不满意,然后请使用using语句包装它。调用不执行任何操作的Dispose()方法没有害处。好吧,这不是您永远无法衡量的伤害。


0
投票

好吧,它们的终结器最终将由垃圾收集器调用,并且由于它们不保存(很多)非托管资源(当然也没有像打开文件句柄那样的东西,因此,它们并没有为它打扰。)>

此外,您认为文件对话框通常在应用程序的生存期内显示多少次?


0
投票

如果您未明确调用Dispose(),则垃圾收集器将在您清除之后。在大多数情况下,您可以依靠垃圾收集器为您执行此操作,除非您非常明确地希望在每次构建后清除几分钟的内存使用情况。

© www.soinside.com 2019 - 2024. All rights reserved.