|
■No48951 (渋木宏明(ひどり) さん) に返信 > 変数 bitmap2 が指し示してた Bitmap クラスのインスタンスが GC によって回収(同時に Bitmap.Dispose() 呼び出しが行われていない場合、Bitmap.Dispose() 呼び出しが行われます)までの期間、そのインスタンスが内包している GDI+ のビットマップオブジェクト(そして、それは OS レベルの BITMAP オブジェクトを内包します)が居残ります。
渋木宏明様、解説ありがとうございました。 では、例えば、Test2(ByVal _bitmap As Bitmap)という、引数にBitmapを指定するサブルーチンがあり、 Test()サブルーチンでこれを呼び出す場合、理想としては
Private Sub Test() Dim bitmap1 As New Bitmap(画像ファイル名) '(任意の処理) Dim bitmap2 As New Bitmap(bitmap1, bitmap1.Width/2, bitmap1.Height/2) Test2(bitmap2) '(以下、処理) bitmap2.Dispose() bitmap1.Dispose() End Sub
とすべきでしょうが、これを、bitmap2変数を用意せず、
Private Sub Test() Dim bitmap1 As New Bitmap(画像ファイル名) '(任意の処理) Test2(New Bitmap(bitmap1, bitmap1.Width/2, bitmap1.Height/2)) '(以下、処理) bitmap1.Dispose() End Sub
というやり方だと、Test2呼び出し時の引数をDispose()する機会がないので、 これあまり推奨されないのでしょうか? うまく理解できなくて申し訳ありませんが、がんばって理解するよう努力しますのでよろしくお願いします。
|