如何在c#中清除Groupbox后释放内存

时间:2017-07-09 10:55:19

标签: c# winforms garbage-collection dispose

我有一个名为“radGroupBox1”的组合框,我想在其中打开一个用户控件。 这是我的代码:

radGroupBox1.Controls.Clear();

_main2 = new Forms.MainControl2();
radGroupBox1.Controls.Add(_main2);
_main2.Dock = DockStyle.Fill;
_main2.Frm = this;
_main2.Show();

我的问题是每次执行此代码时,我的内存都会增加。我在任务管理器中检查它。例如,如果您在我的按钮上单击10次(运行代码),则内存将增加10倍。如何释放分配给上一个对象的内存? 有没有办法处理它或强制GC释放内存?

1 个答案:

答案 0 :(得分:3)

您可以阅读documentation

  

调用Clear方法不会从内存中删除控制句柄。您必须显式调用Dispose方法以避免内存泄漏。

所以这意味着您必须自己Dispose用户控制。另外,请确保在用户控件内部处理任何可支配资源。

radGroupBox1.Controls.Clear();
_main2?.Dispose();
_main2 = new Forms.MainControl2();
radGroupBox1.Controls.Add(_main2);
_main2.Dock = DockStyle.Fill;
_main2.Frm = this;
_main2.Show();