WindowsForms ソリューションに、メモリ リークの問題があるフォームがあります。フォームは MainForm のボタンで開きます。複数回開いた後、未処理の例外によってアプリケーションが終了します。
そのフォームは MainForm にプライベート インスタンスを持ち、閉じられるか、いくつかのロジック ルールに従って再作成されます。
その子フォームには、MainForm からのデリゲートがいくつか含まれています。デリゲートがメモリリークを引き起こす可能性があると思います。おそらく、フォームが閉じられたり再作成されたりすると、古いインスタンスがデリゲートにリンクされたメモリに保持される可能性があります。
フォーム内のデリゲートを「破棄」する方法と場所は?
Protected Overrides Sub Finalize() ' here?
Protected Overrides Sub OnHandleDestroyed(e As System.EventArgs) ' or here
Me._MyDelegate1 = Nothing
Me.DlgDelegate1 = Nothing
Me.DlgDelegate2 = Nothing