【问题标题】:How to clear the WebBrowser from memory properly [duplicate]如何正确地从内存中清除 WebBrowser [重复]
【发布时间】:2014-05-18 23:11:31
【问题描述】:

在我的C# WinForms 应用程序中,我有一个TabControl,其中嵌套了一个WebBrowser 控件。

当页面加载(Silverlight 控制页面)时,我的页面中的音频和视频就可以了。

但是当我打电话时

tabControl1.TabPages.Remove(myTabPage);

我仍然听到音频播放。如何从内存中清除当前的 webBrowser?

【问题讨论】:

  • 在 webbrowser 实例上调用 Dispose 会发生什么?
  • 是的,我没有调用 dispose 方法。 :)

标签: c# .net winforms memory


【解决方案1】:

您已从选项卡控件中删除了选项卡页。您没有销毁标签页,也没有销毁它包含的控件。

事实上,在显示的代码之后,你就可以这样做

tabControl2.TabPages.Add(myTabPage);

将同一标签页添加到不同的标签控件。 Web 浏览器通常会执行类似的操作,以启用可以将选项卡拖放到另一个窗口的功能。这也是您暂时使标签页不可见的方式,因为 TabControl 没有 Visible 属性。

你需要做的是调用标签页控件的 Dispose 方法,myTabPage。通常,一旦其父选项卡控件被销毁,框架会自动处理此问题,但由于您手动从其父容器中删除控件,因此不会发生这种情况。您必须手动处理它。修改您的代码如下所示:

tabControl1.TabPages.Remove(myTabPage);
myTabPage.Dispose();

这应该释放标签页及其子控件的资源,包括 WebBrowser。

但这并不一定会停止声音,至少不会立即停止。为确保发生这种情况,您需要将 WebBrowser 控件的 Source property 设置为 null。您必须在处理标签页之前执行此操作(您不能修改已处理对象的属性)。

【讨论】:

  • 好的,也感谢您提供声音提示!很有帮助
猜你喜欢
  • 1970-01-01
  • 2018-02-21
  • 2017-05-09
  • 1970-01-01
  • 2011-04-28
  • 2016-07-21
  • 2011-03-01
  • 2020-12-18
  • 2017-03-11
相关资源
最近更新 更多