2010年8月30日月曜日

.NET MDI子フォームにToolTipコントロールをプログラムで動的に配置するとメモリーリークが発生する。

おもいっきりハマったYo。・゚・(ノД`)・゚・。

ある画面を開いたり閉じたりしているとOutOfMemoryExceptionが発生します。
タスクマネージャで確認するとGDIオブジェクトの数がどんどん増加していき
1万ちょうどでOutOfMemoryExceptionが発生しました。

原因はMDI子フォームにToolTipコントロールをプログラムで動的に配置するとメモリーリークが発生するそうです。
http://support.microsoft.com/kb/817795/ja

Ver1.1で修正されたのに、Ver2.0で復活したようです。
http://social.msdn.microsoft.com/Forums/ja-JP/vsgeneralja/thread/cb1688ae-2156-4713-92d0-fc3454fc1f49


ToolTipコントロールをプログラムで動的に配置した場合は、
Disposeで開放するかComponentsに追加するようにします。
デザイナで配置した場合はComponentsに追加されるので問題ありません。

0 件のコメント: