我的应用程序使用TabControl
来显示数据,每次用户请求数据时,应用程序都会创建一个新的TabPage
,其中包含许多控件(PictureBox
控件,Label
控制,.etc)。用户在某个时刻将关闭他正在使用的TabPage
控件。现在这里的问题是关闭的TabPage
控件,它们会堆积在内存中,导致程序使用大部分内存。从TabPage
中删除TabControl
控件不会将其丢弃或处置,只是隐藏它,但控件仍然会挂在内存中。
我用来删除TabPage
的代码如下:
tabControl.TabPages.Remove(myTabPage);
myTabPage.Dispose();
问:我如何完全摆脱TabPage
控件?
答案 0 :(得分:0)
您可以每次遍历与之关联的tabpage控件并将它们放在循环中。
tabControl1.TabPages[0].Controls[i].Dispose();
答案 1 :(得分:0)
调用myTabPage.Dispose()应该处理TabPage及其子节点的资源。但是,这些对象使用的内存可能不一定会被GC立即释放,即使这些对象未被其他对象引用。
在内存非常大的计算机中,GC往往是懒惰的。只要稍后释放内存,比如几分钟后,您就不必担心了。