循环创建控件,如何释放控件内存

helloDongXiu 2011-05-06 05:33:57

现在的问题是:每执行一次下面的代码,内存就增加,如何释放控件内存。

有一个Timer,定时执行下面的代码。

代码如下:

int row = 1;
int columnNum = 5;
int width = 217;
int height = 266;
int left = 20;
int top = 16;
for (int z = 0; z < groupPanel5.Controls.Count; z++)

{
Control c = groupPanel5.Controls[z];
foreach (Control cc in c.Controls)
cc.Dispose();
groupPanel5.Controls.RemoveAt(z);
c.Dispose();
}
groupPanel5.Controls.Clear();
GC.Collect();
foreach (ServersInfo sv in servs)
{
DevComponents.DotNetBar.PanelEx pe = new DevComponents.DotNetBar.PanelEx();


DevComponents.DotNetBar.Controls.ReflectionImage refimage = new DevComponents.DotNetBar.Controls.ReflectionImage();
refimage.Location = new System.Drawing.Point(0, 0);
refimage.Name = "refimage" + sv.ID.ToString();
refimage.Size = new System.Drawing.Size(217, 125); refimage.Tag = pe;
pe.Name = "panelEx_Server" + sv.ID.ToString();

pe.Tag = sv;
pe.Size = new Size(width, height);

if (i % columnNum == 0)
{
if (i != 0)
row++;

pe.Location = new Point(left, (row - 1) * height + top * row);

}
else
{
if (row == 1)
{
pe.Location = new Point(i * width + (i + 1) * left, top);
}
else
{
pe.Location = new Point((columnNum - (((row * columnNum) - 1) - i) - 1) * width + (columnNum - (((row * columnNum) - 1) - i)) * left, (row - 1) * height + top * row);
}
}

DevComponents.DotNetBar.Controls.ReflectionLabel reflabel_Serverinfo = new DevComponents.DotNetBar.Controls.ReflectionLabel();
reflabel_Serverinfo.Location = new System.Drawing.Point(0, 100);
reflabel_Serverinfo.Name = "reflabel" + sv.ID.ToString();
reflabel_Serverinfo.Size = new System.Drawing.Size(217, 65);

DevComponents.DotNetBar.Controls.ReflectionLabel reflabel = new DevComponents.DotNetBar.Controls.ReflectionLabel();
reflabel.Location = new System.Drawing.Point(0, 100);
reflabel.Name = "reflabel" + sv.ID.ToString();
reflabel.Size = new System.Drawing.Size(217, 63);
pe.Controls.Add(reflabel);
pe.Controls.Add(reflabel_Serverinfo);
pe.Controls.Add(refimage);
this.groupPanel5.Controls.Add(pe);
Application.DoEvents();

i++;
}
...全文
326 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ycproc 2011-06-01
  • 打赏
  • 举报
回复
net自己的GC已经会回收的
如果你硬是不放心
就自己调用 GC.Collect() 强制释放
mills_ 2011-06-01
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 karascanvas 的回复:]
高手在忙着赚钱,菜鸟才来混论坛。
[/Quote]

嗯!嗯!
种草德鲁伊 2011-05-30
  • 打赏
  • 举报
回复
高手在忙着赚钱,菜鸟才来混论坛。
helloDongXiu 2011-05-30
  • 打赏
  • 举报
回复
怎么就没有人来回答呢,高手哪去了?
下载代码方式:https://pan.quark.cn/s/957405011bdf 在计算机视觉技术中,轮廓提取与中心识别被视为两项核心的技术,它们对于图像处理及模式识别领域扮演着不可或缺的角色。本文将深入剖析这两种算法,并围绕"轮廓提取(中心识别)算法"这一核心主题,同时结合所提供的压缩包文件"Contour",对相关知识点进行详尽的阐述。 轮廓提取算法,主要功能在于识别并分离图像中的不同对象。该算法通过探测物体边缘,构建出明确的边界线,从而实现图像内部各组成部分的区分。在多色位图环境下,不同的色彩可能象征着不同的对象或区域,因此,一个性能优越的轮廓提取算法应当具备处理此类复杂场景的能力。常见的轮廓提取算法包括Canny边缘检测、Sobel算子、Laplacian算子和Hough变换等。这些算法各自具备独特的优缺点,究竟选择何种方法,需要依据具体的应用情境以及性能要求来决定。 1. Canny边缘检测:由John F. Canny所研发,这是一种自适应的多级边缘检测方法。Canny算法借助高斯滤波器来降低噪声干扰,随后运用强度梯度和非极大值抑制技术来定位最显著的边缘,最终通过双阈值检测来区分边缘与噪声。 2. Sobel算子:Sobel算子是一种基于梯度的边缘检测工具,它通过计算图像在水平和垂直方向上的梯度来探测边缘。此方法操作简便且效率较高,但可能对图像中的噪声较为敏感。 3. Laplacian算子:Laplacian算子是一种二阶导数算子,能够迅速识别图像中的尖峰(即边缘)。然而,它容易受到噪声的影响,因此通常需要与其他技术结合使用,例如Gaussian滤波。 4. Hough变换:Hough变换是一种在参数空间中进行边缘检测的方法,它能够检测出任意...

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧