winform应用程序的内存使用情况

时间:2012-09-17 21:13:14

标签: c# memory

我有一个可以动态添加到devexpress选项卡控件的表单。当您第一次单击选项卡时,控件就在那里。您可以根据需要添加其他内容。每个人都有一个删除按钮。但是,如果单击“添加”按钮,则会在运行过程中添加大约30 MB。当你删除那里的MB时,MB会留在内存中。

我的删除代码:

MyCustom temp = this._UIList[idx] as MyCustom;
if (this._UIList.Count == 1)
{
temp.Clear();
}
else
{
if (temp != null)
    {
        this._UIList.RemoveAt(idx);
            this._UIList.TrimToSize();
            this.pnlInner.Controls.Remove(temp);
            temp.CleanUP();
            temp.Dispose();
            //now reshuffle all the note controls
            ReshuffleMyCustomControls();
    }
}

任何方向都会非常有帮助。感谢。

1 个答案:

答案 0 :(得分:1)

确保删除已连线的所有事件处理程序。他们可以在内存中保存引用。

对于你所连接的任何事件,你必须做这样的事情:

    stripevents(AddressOf Any_Control_ValChanged)
    stripevents(AddressOf Any_EnterControl)
    stripevents(AddressOf Any_LeaveControl)
    stripevents(AddressOf ButtonClick)

Sub stripevents(ByVal eh As EventHandler)
    [Delegate].RemoveAll(eh, eh)
End Sub