私は C# を使用していますが、おそらく VB.NET でも同じです。I C++ オブジェクトのデストラクタにブレークポイントを設定して、オブジェクトがいつ/削除/解放されたかを知るだけです。winforms では、基本クラスが SupressFinalize を呼び出して、フォームのデストラクタが呼び出されないようにすることを理解しているので、そのようにすることはできないと思います。 オブジェクトがガベージ コレクションされたかどうかを知る別の方法はありますか? キャッチ 22 のように思えますが、存在する場合はチェックするために参照が必要になる可能性がありますが、その参照を保持することで、収集されたガベージはそれを粉砕しません。
私はこれを読みました.NETでメモリリークを見つけるのに役立つ戦略とツールは何ですか? 、この「全体像」を処理するためのツールやフレームワークがあることを理解しています。数週間以内に、これらの方法のいくつかを試してみるつもりです。今のところ、フォームが削除されていないことに関連するリークが発生している可能性が非常に強いと感じているので、これを1つ確認したいだけです(そして、知るために知りたいだけです)。
Dispose を監視できることはわかっていますが、Dispose を呼び出すことはできると確信していますが、それでもフォーム オブジェクトは存在したままです。その理論をテストするために、フォームでコールバック イベントを登録した既知の問題を作成し、登録を解除せずにフォームを閉じました。案の定、Dispose が呼び出されました (そして「破棄」は true でした) が、後でイベントが発生したときに、既に破棄されていると思われるフォーム内のブレークポイントにヒットしました。