CommonDialog的权益应该被处置?

时间:2010-11-10 02:19:29

标签: .net winforms idisposable

使用代码块或Dispose方法尚未在此MSDN示例中使用对话框。

但是为什么它没有处理,尽管它有Dispose方法?

3 个答案:

答案 0 :(得分:2)

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

这并没有完全记录在案。它有点可见,MSDN Library显示该方法是继承的,而不是被类重写。这仍然没有明显绕过继承的Component.Dispose()方法是可以的(它是)。如果您对它感到不舒服,那么许多程序员都会毫不犹豫地用使用语句来包装它。调用不执行任何操作的Dispose()方法没有坏处。好吧,不是你曾经能够衡量的那种伤害。

答案 1 :(得分:0)

好吧,他们的终结器最终将被垃圾收集器调用,并且由于它们没有(许多)非托管资源(当然也没有像开放文件句柄那样),所以他们并没有为它做一个例子。

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

答案 2 :(得分:0)

如果您没有明确调用Dispose(),垃圾收集器会在您之后进行清理 大多数情况下,您可以依靠垃圾收集器为您执行此操作,除非您非常具体地说明在每次构建后清除微小内存使用情况。