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

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

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

Re[4]: 画像のリソースを正しく開放するには?


(過去ログ 32 を表示中)

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

■15733 / inTopicNo.1)  画像のリソースを正しく開放するには?
  
□投稿者/ まぐねしうむ (19回)-(2008/03/19(Wed) 17:59:15)

分類:[C#] 

いつもお世話になっております。

例えばピクチャーボックスに画像を複数回張ったり消したりする処理で
下記の2パターンを試したところ「1」のケースは期待通りにすぐ開放されましたが
「2」のケースは期待した動きとは異なり、すぐにはリソースが開放されませんでした。
(開放されているかどうかはタスクマネージャのメモリ使用量で
 確認しています。)

お手数ですが「1」のケースの様にすぐにリソースを開放する方法が無いか
教えてください。

1.画像を外部から読み込む

 if (pictureBox1.Image != null)
 {
    pictureBox1.Image.Dispose();
    pictureBox1.Image = Image.FromFile(Application.StartupPath + "\\Test.bmp");
 }
 else
 {
    pictureBox1.Image = Image.FromFile(Application.StartupPath + "\\Test.bmp");
 }

2.内部のリソースファイルから読み込む

 if (pictureBox1.Image != null)
 {
    pictureBox1.Image.Dispose();
    pictureBox1.Image = Properties.Resources.TestJpg;
 }
 else
 {
    pictureBox1.Image = Properties.Resources.TestJpg;
 }

以上よろしくお願いします。

引用返信 編集キー/
■15735 / inTopicNo.2)  Re[1]: 画像のリソースを正しく開放するには?
□投稿者/ Tom Yama (43回)-(2008/03/19(Wed) 18:13:13)
No15733 (まぐねしうむ さん) に返信
> いつもお世話になっております。
>
> 例えばピクチャーボックスに画像を複数回張ったり消したりする処理で
> 下記の2パターンを試したところ「1」のケースは期待通りにすぐ開放されましたが
> 「2」のケースは期待した動きとは異なり、すぐにはリソースが開放されませんでした。
> (開放されているかどうかはタスクマネージャのメモリ使用量で
>  確認しています。)
どっちのケースも、ちゃんと「解放」されていますよ。
(マネージ、アンマネージどちらにせよ)リソースの「解放」と、タスクマネージャのメモリ使用量の増減との間には、
何の関連もありません。

引用返信 編集キー/
■15739 / inTopicNo.3)  Re[2]: 画像のリソースを正しく開放するには?
□投稿者/ やじゅ (259回)-(2008/03/19(Wed) 18:38:16)
No15735 (Tom Yama さん) に返信
>
>開放されているかどうかはタスクマネージャのメモリ使用量で確認しています。
>

それが駄目です。

メモリ使用量は、実際に使用されているメモリ量とイコールではありません。
NETにおいて実際に使用しているメモリのサイズを確認するには、GCクラス
のGetTotalMemoryメソッドを使用して計測する必要があります。
http://www.atmarkit.co.jp/fdotnet/vblab/appqa_01/appqa_01_01.html
引用返信 編集キー/
■15742 / inTopicNo.4)  Re[3]: 画像のリソースを正しく開放するには?
□投稿者/ まぐねしうむ (20回)-(2008/03/19(Wed) 19:56:47)
Tom Yamaさん やじゅさん ご返信有難うございます。

今回のケースですと両方とも問題なく開放できるとの事了解しました。
また、今後はメモリ使用量はご提示して頂いた方法で確認したいと思います。

有難うございました。
引用返信 編集キー/
■15743 / inTopicNo.5)  Re[4]: 画像のリソースを正しく開放するには?
□投稿者/ まぐねしうむ (21回)-(2008/03/19(Wed) 19:57:07)
すいません解決済みにするのを忘れてました。
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -