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方法。:)好的,谢谢你的提示和声音!非常有用