C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

リソースに含めた画像BitmapのDispose

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■86329 / inTopicNo.1)  リソースに含めた画像BitmapのDispose
  
□投稿者/ パープル (1回)-(2018/01/19(Fri) 12:56:21)

分類:[VB.NET/VB2005 以降] 

2018/01/19(Fri) 12:58:13 編集(投稿者)

VB2012を使っています。

Bitmapオブジェクトは使い終わったらDisposeしましょう、
というような記事を見かけますが、
例えば、リソースに画像ファイルを含めた場合で、

Dim bmp As Bitmap
If (条件) Then
bmp = My.Resources.Image1
Else
bmp = My.Resources.Image2
End If

のような場合も、bmpという変数を使い終わったらDisposeする必要があるのでしょうか?
引用返信 編集キー/
■86331 / inTopicNo.2)  Re[1]: リソースに含めた画像BitmapのDispose
□投稿者/ 魔界の仮面弁士 (1541回)-(2018/01/19(Fri) 14:14:29)
2018/01/19(Fri) 14:23:14 編集(投稿者)

No86329 (パープル さん) に返信
> bmpという変数を使い終わったらDisposeする必要があるのでしょうか?

「bmpという変数」を Dispose するというよりは、
それが指し示す Bitmap オブジェクトのインスタンスを
Dispose する必要があると言った方が正確かと思います。

その上で、『使い終わっているのであれば、Dispose する』のが原則です。
もちろん、まだ使用される場合には Dispose しては駄目ですが。


ひとつ覚えておかねばならない点として、My.Resources.Image1 は
アクセスするたびに新しいインスタンスを生成してしまうということです。

 Dim a As Bitmap = My.Resources.Image1
 Dim b As Bitmap = My.Resources.Image1
 MsgBox(a Is b) 'これは False となる。

そのためこの場合、変数 a と b は、
それぞれ個別に Dispose されるべきです。
引用返信 編集キー/
■86334 / inTopicNo.3)  Re[2]: リソースに含めた画像BitmapのDispose
□投稿者/ パープル (2回)-(2018/01/19(Fri) 15:32:28)
> ひとつ覚えておかねばならない点として、My.Resources.Image1 は
> アクセスするたびに新しいインスタンスを生成してしまうということです。

ありがとうございます!
まさに私が疑問に思っていた点が見事に理解できました!
心より感謝いたします。
解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ