在我的C#
WinForms
应用程序中,我有一个TabControl
嵌套了WebBrowser
控件。
当页面加载时(一个silverlight控制页面)我在我的页面中得到了音频和视频。
但是当我打电话时
tabControl1.TabPages.Remove(myTabPage);
我仍然听到音频播放。如何从内存中清除当前的webBrowser?
答案 0 :(得分:1)
您已从标签控件中删除了标签页。你有不破坏标签页,也没有销毁它包含的控件。
事实上,在显示代码之后,您可以立即执行
tabControl2.TabPages.Add(myTabPage);
将相同的标签页添加到不同的标签控件。 Web浏览器通常会执行类似的操作,以启用可以将选项卡拖放到另一个窗口的功能。这也是暂时使标签页不可见的方式,因为TabControl没有Visible
属性。
您需要做的是为标签页控件myTabPage
调用Dispose方法。通常,框架会在其父选项卡控件被销毁后自动处理,但由于您手动从其父容器中删除控件,因此不会发生这种情况。你必须手动处理它。将代码修改为如下所示:
tabControl1.TabPages.Remove(myTabPage);
myTabPage.Dispose();
这应该处理标签页及其子控件的资源,包括WebBrowser。
但这并不一定会阻止声音,至少不会立即停止。为确保发生这种情况,您需要将WebBrowser控件的Source
property设置为null
。您必须在处置标签页之前执行此操作(您无法修改已处置对象的属性)。