私の会社のエンタープライズ ソリューションでは、できる限り多くのメモリ リークを調べて一掃しています。
他の多くのフォーム (たとえば、RecommendationCaptureForm) によって継承される BaseCaptureForm があります。システム全体で (たとえば)、この RecommendationCaptureForm はモーダルに呼び出されます (ShowDialog())。私の知る限り、フォームがモーダルに開かれるときは、using ステートメントでラップするか、完了したら破棄する必要があります。
BaseCaptureForm にはヒットしない dispose メソッドがあります。ファイナライザーを入れましたが、ヒットすることはありません。ANTS Memory Profiler は、これらすべてのフォームがメモリに保持されていることを示しています。
メモリリークを止めるために、これらのキャプチャフォーム (それほど長く開いていない) を破棄する方法について誰か提案がありますか? システム全体で何百万もの ShowDialog 呼び出しがあり、他の誰かがこの問題に遭遇したかどうか疑問に思っていましたか?
編集 明確にするために、閉じたら BaseCaptureForm で自動的に破棄するためにできることはありますか? それらを破棄することを期待して、すべての ShowDialog() 呼び出しを実行することはできません。フォームの OnClosed イベントで dispose メソッドを呼び出すと、厄介なちらつきが発生します。