0

我有一个可以动态添加到 devexpress 选项卡控件的表单。当您第一次单击选项卡时,控件就在那里。您可以根据需要添加其他内容。每个都有一个删除按钮。但是,如果您单击添加按钮,它会在正在运行的进程下添加大约 30 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();
    }
}

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

4

1 回答 1

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
于 2012-09-17T21:32:02.503 回答