Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
アンマネージリソースを解放について(IDisposable,Dispose,Finalize)
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=10833#CommentId23472
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
魔界の仮面弁士
 (社会人)
投稿日時
2012/5/7 14:25:34
追加で、Pen や Brush のような存在にも注意してください。
これらは内部で GDI+ API のハンドルを保持するため、使用後には Dispose を
必要とするのですが、Pens.Red や Brushes.Blue などについては、勝手に
Dispose するわけにはいきません。
何故なら、これらは自分で生成したインスタンスではなく、
.NET Framework 側で内部的に生成されるインスタンスであるためです。
Pens.Red.Dispose してしまうと、アプリケーションドメインを再起動するまで
Pens.Red を利用することができなくなってしまいます。
これと同様なものとしては、Graphics オブジェクトがあります。
Control.CreateGraphics や Graphics.FromImage などで取得した
インスタンスの場合、Dispose を明示的に呼び出す義務が発生しますが、
Paint イベント(あるいは OnPaint メソッド)の引数から得た e.Graphics は
Dispose してはいけません。
なお判断がつかないものに関しては、内部実装をソースから読み取るという手があります。
(ただし残念ながら、すべてのソースが公開されているわけではありません)
http://www.jankh.net/menu-memo-pg/menu-memo-dotnet/28-content-dotnet-source.html