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

C# 如何在c中清除Groupbox后释放内存#,c#,winforms,garbage-collection,dispose,C#,Winforms,Garbage Collection,Dispose,我有一个名为“radGroupBox1”的groupbox,我想在其中打开一个用户控件。 这是我的代码: radGroupBox1.Controls.Clear(); _main2 = new Forms.MainControl2(); radGroupBox1.Controls.Add(_main2); _main2.Dock = DockStyle.Fill; _main2.Frm = this; _main2.Show(); 我的问题是每次执行这段代码时,我的内存都会增加。我在任务管理

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

radGroupBox1.Controls.Clear();

_main2 = new Forms.MainControl2();
radGroupBox1.Controls.Add(_main2);
_main2.Dock = DockStyle.Fill;
_main2.Frm = this;
_main2.Show();
我的问题是每次执行这段代码时,我的内存都会增加。我在任务管理器中检查它。例如,如果您在“我的”按钮(运行代码)上单击10次,内存将增加10倍。如何释放分配给上一个对象的内存? 有没有办法处置它或强制GC释放内存?

如您在以下内容中所读:

调用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();
正如您在中看到的:

调用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();

你要在某处关闭(
\u main2.Close()
)表单吗?@OfirWinegarten我应该在哪里执行此操作?嗯。。。我猜您要关闭/隐藏用户控件的位置。还有,为什么每次都要重新创建它?为什么不直接隐藏/显示?还不完全清楚你在说什么doing@OfirWinegarten因为我想展示一种全新的_main2。无穷无尽changes@dama在添加项目之前,我使用“Controls.Clear()”,这是否会清除radGroupBox1中的所有控件?是否正在关闭(
\u main2.Close()
)表单?我应该在何处执行此操作?嗯。。。我猜您要关闭/隐藏用户控件的位置。还有,为什么每次都要重新创建它?为什么不直接隐藏/显示?还不完全清楚你在说什么doing@OfirWinegarten因为我想展示一种全新的_main2。无穷无尽changes@dama在添加项目之前,我使用“Controls.Clear()”,这是否会清除radGroupBox1中的所有控件?