3

我有一个 WinForms TabControl,我在运行时动态添加 TabPages。每个 TabPage 都包含一个 WebBrowser 控件。我还可以在运行时删除 TabPages。

我应该打扰 Dispose() 处理 TabPage 和/或 WebBrowser 控件吗?

在我看来,我至少应该 Dispose() WebBrowser 控件,因为它有点占用资源。

4

3 回答 3

2

您分配的所有实现 IDisposable 的东西都应该调用 Dispose。这就是实现 IDisposable 的目的。

于 2009-07-09T21:28:21.653 回答
2

当你删除它时,你应该 Dispose() 你的标签页。这将自动释放所有子控件。

有关详细信息,请参阅Control.Dispose文档:

释放 Control 及其子控件使用的非托管资源,并可选择释放托管资源。

标签页的 dispose 也会为你处理掉所有的子控件。

于 2009-07-09T21:40:20.317 回答
1

如果你显式调用 Dispose(),它通常会比你不调用它被清理得更快。如果您关心资源,或者您的对象正在占用可能稀缺或需求量很大的其他资源,那么显式调用 Dispose() 总是一个好主意。

我总是推荐这篇 CodeProject 文章来帮助人们正确理解 Dispose 模式,以及 Dispose 的全部内容。 http://www.codeproject.com/KB/cs/idisposable.aspx

于 2009-07-09T21:28:56.020 回答