0

我的应用程序用于TabControl显示数据,每次用户请求数据时,应用程序都会创建一个TabPage包含许多控件(PictureBox控件、Label控件等)的新控件。用户在某些时候会关闭TabPage他正在使用的控件。现在这里的问题是关闭的TabPage控件,它们会堆积在内存中,导致程序使用很大一部分内存。从中删除TabPage控件TabControl不会释放它,也不会释放其中的项目,它只是隐藏它,但控件仍然挂在内存中。

我用来删除的代码TabPage类似于:

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

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

4

2 回答 2

0

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

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

于 2013-02-28T23:41:49.773 回答
0

您可以每次都通过与其关联的标签页控件进行迭代,并将它们放置在一个循环中。

            tabControl1.TabPages[0].Controls[i].Dispose();
于 2013-02-28T23:22:19.417 回答