Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何正确地从内存中清除WebBrowser_C#_.net_Winforms_Memory - Fatal编程技术网

C# 如何正确地从内存中清除WebBrowser

C# 如何正确地从内存中清除WebBrowser,c#,.net,winforms,memory,C#,.net,Winforms,Memory,在我的C#WinForms应用程序中,我有一个TabControl,其中嵌套了一个WebBrowser控件 当页面加载(silverlight控件页面)时,我可以在页面中获得音频和视频 但是当我打电话的时候 tabControl1.TabPages.Remove(myTabPage); 我仍能听到音频播放。如何从内存中清除当前webBrowser?您已经从选项卡控件中删除了选项卡页。您没有销毁选项卡页,也没有销毁其中包含的控件 事实上,在代码显示之后,您可以立即执行以下操作 tabContro

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

当页面加载(silverlight控件页面)时,我可以在页面中获得音频和视频

但是当我打电话的时候

tabControl1.TabPages.Remove(myTabPage);

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

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

事实上,在代码显示之后,您可以立即执行以下操作

tabControl2.TabPages.Add(myTabPage);
将相同的选项卡页添加到不同的选项卡控件。Web浏览器通常会执行类似的操作,以启用可以将选项卡拖放到另一个窗口的功能。这也是临时使选项卡页不可见的方法,因为TabControl没有
可见的
属性

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

tabControl1.TabPages.Remove(myTabPage);
myTabPage.Dispose();
这将处理选项卡页及其子控件的资源,包括WebBrowser


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

在webbrowser实例上调用
Dispose
时会发生什么情况?是的,我没有调用Dispose方法。:)好的,谢谢你的提示和声音!非常有用