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 に答える