C# WinForm 动态添加-删除控件内存未释放
根据需求要在Winform的一个panel中动态的添加控件,处理完后删除(子线程中操作):for(n){while(panel1.Controls.Count>0){pa...
根据需求要在Winform的一个panel中动态的添加控件,处理完后删除(子线程中操作):
for(n)
{
while (panel1.Controls.Count > 0)
{
panel1.Invoke((Action)delegate
{
panel1.Controls.Remove(panel1.Controls[0]);
});
}
panel1中根据条件动态添加控件
……
处理
……
}
跟踪发现内存持续增加。难道是因为panel1.Controls.Remove(panel1.Controls[0]);没有清理干净内存? 展开
for(n)
{
while (panel1.Controls.Count > 0)
{
panel1.Invoke((Action)delegate
{
panel1.Controls.Remove(panel1.Controls[0]);
});
}
panel1中根据条件动态添加控件
……
处理
……
}
跟踪发现内存持续增加。难道是因为panel1.Controls.Remove(panel1.Controls[0]);没有清理干净内存? 展开
3个回答
展开全部
你只是移除了!!没有释放啊!!
while (panel1.Controls.Count > 0)
{
panel1.Invoke((Action)delegate
{
Control C=panel1.Controls[0]);
panel1.Controls.Remove(C);
C.Dispose();
});
}
while (panel1.Controls.Count > 0)
{
panel1.Invoke((Action)delegate
{
Control C=panel1.Controls[0]);
panel1.Controls.Remove(C);
C.Dispose();
});
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个最好是看下添加控件部分的代码,主要是创建实例的部分
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
remove 又不回收内存
该有引用的还是要引用到对象上
该有引用的还是要引用到对象上
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询