我的应用程序使用TabControl来显示数据,每当用户请求数据时,应用程序将创建一个新的TabPage,其中包含许多控件(PictureBox控件、Label控件、.etc)。用户在某个时候将关闭他正在处理的TabPage控件。现在的问题是关闭的TabPage控件,它们会堆积在内存中,导致程序使用内存的很大一部分。从TabPage中删除TabControl控件并不会释放它,也不会在其中释放项目,它只是隐藏它,但是控件仍然挂在内存中。
我用于删除TabPage的代码如下所示:
tabControl.TabPages.Remove(myTabPage);
myTabPage.Dispose(); 问:我怎样才能完全摆脱TabPage 控件?
发布于 2013-02-28 23:22:19
您可以每次迭代与其关联的tabpage控件,并在循环中将它们释放。
tabControl1.TabPages[0].Controls[i].Dispose();发布于 2013-02-28 23:41:49
调用myTabPage.Dispose()应该释放TabPage及其子程序的资源。但是,这些对象使用的内存不一定会立即由GC释放,即使其他对象没有引用这些对象。
在内存很大的计算机中,GC往往很懒。只要内存稍后会释放,比如说几分钟后,你就不用担心了。
https://stackoverflow.com/questions/15147116
复制相似问题