从Windows窗体处置GDI对象

时间:2018-07-14 14:20:45

标签: c# winforms gdi devexpress-windows-ui

我正在开发一个应用程序,其中我在一个tablelayoutpanel中创建动态控件,该控件包含两个图片框和3个组合框,每个图片框创建2个GDI对象,每个组合框创建1个,从而导致在一个面板中创建7个GDI对象行。但是,当我完成工作后,我试图处置tablelayoutpanel的控件,但是GDI对象没有被处置,从而导致应用程序崩溃。每次我打开tablelayoutpanel时,它将GDI对象附加到先前的计数。经过一段时间后,它超过10,000,应用程序停止响应。 我正在尝试类似的方法来处理GDI对象

for(int i =TableLayoutPanel.Controls.count -1;i >=0;--i )
{
TableLayoutPanel.Controls[i].Dispose();
}

这将删除一些GDI对象,但不是大多数。 任何人都可以帮我解决这个问题。另外,当我关闭表单(不是整个应用程序)时,仍然没有释放GDI对象。

1 个答案:

答案 0 :(得分:0)

如@hans所说,调用Gc.collect()起作用