处置TabPage控件及其控件

时间:2013-02-28 22:44:32

标签: c# .net memory-leaks user-controls tabcontrol

我的应用程序使用TabControl来显示数据,每次用户请求数据时,应用程序都会创建一个新的TabPage,其中包含许多控件(PictureBox控件,Label控制,.etc)。用户在某个时刻将关闭他正在使用的TabPage控件。现在这里的问题是关闭的TabPage控件,它们会堆积在内存中,导致程序使用大部分内存。从TabPage中删除TabControl控件不会将其丢弃或处置,只是隐藏它,但控件仍然会挂在内存中。

我用来删除TabPage的代码如下:

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

问:我如何完全摆脱TabPage控件?

2 个答案:

答案 0 :(得分:0)

您可以每次遍历与之关联的tabpage控件并将它们放在循环中。

            tabControl1.TabPages[0].Controls[i].Dispose();

答案 1 :(得分:0)

调用myTabPage.Dispose()应该处理TabPage及其子节点的资源。但是,这些对象使用的内存可能不一定会被GC立即释放,即使这些对象未被其他对象引用。

在内存非常大的计算机中,GC往往是懒惰的。只要稍后释放内存,比如几分钟后,您就不必担心了。