如何正确清除内存中的浏览器

本文关键字:浏览器 内存 何正确 清除 | 更新日期: 2023-09-27 18:04:01

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

当页面加载时(一个silverlight控制页面),我在我的页面中得到音频和视频。

但是当我调用 时
tabControl1.TabPages.Remove(myTabPage);

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

如何正确清除内存中的浏览器

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

实际上,在显示的代码之后,您可以立即执行

tabControl2.TabPages.Add(myTabPage);

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

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

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

这应该会释放选项卡页及其子控件的资源,包括WebBrowser。

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