最近在开发一个C#项目,发现程序的内存占用飞速上升。反复查找,终于定位到原因。由于在主界面和子界面切换过程中对于show语句使用不当所造成的。
从Form1到Form2界面切换原来代码如下:
Form2 dlg = new Form2();
Dlg.show();
this.Hide();
从子界面Form2返回Form1的代码如下:
Form1 dlg = new Form1();
Dlg.show();
this.Hide();
在这儿其实,就会不停创建内存,开辟新的界面,从而导致内存急剧上升。Show是显示非模态窗体,经过修改和测试,在此类情况下,最好采用ShowDialog来显示模态窗体。经过修改的正确标准写法如下。
从Form1到Form2界面切换原来代码如下:
Form2 dlg = new Form2();
this.Hide();
dlg.ShowDialog();//子窗体只有关闭,才执行后面的语句
this.Show();
从子界面Form2返回Form1的代码如下:
this.close();//直接关闭当前的Form2窗体
经过这样修改后,测试发现内存没有不停增加。子窗体关闭后,占用内存得到释放。特意把该问题总结分享出来,希望对大家有帮助。