- ふらっと C#,C♯,C#(初心者用) Part121 [無断転載禁止]©2ch.net
515 :デフォルトの名無しさん[sage]:2016/06/26(日) 16:06:01.20 ID:2tSx7hd9 - >>514
・開放したいタイミングは別の画像を差し替える時 Bitmap bmp=new Bitmap(@file); PictureBox.Image=bmp; bmp=new Bitmap(@newfile);//Disposeせずにそのまま使う PictureBox.Image=bmp; ・Pictureboxを使うのを中断したいとき PictureBox.Image.Dispose(); それぞれGC.Collect(); ・プログラム終了時 なにもしなくていい
| - ふらっと C#,C♯,C#(初心者用) Part121 [無断転載禁止]©2ch.net
517 :デフォルトの名無しさん[sage]:2016/06/26(日) 16:29:10.99 ID:2tSx7hd9 - >>516
ファイルのロックだけならnew Bitmap(@file)でも回避できるけど >>514のコードと目的見ないとこれ以上はわからんな
| - ふらっと C#,C♯,C#(初心者用) Part121 [無断転載禁止]©2ch.net
535 :デフォルトの名無しさん[sage]:2016/06/26(日) 18:33:17.04 ID:2tSx7hd9 - >>522
画像をどこから持ってくるかわからないからああいった書き方にしたんだけど PictureBoxに直接ファイルを読み込んでいいのなら PictureBox.Image=new Bitmap(@file);//読込み。ファイルはロックされない //PictureBox表示中 PictureBox.Image.Dispose();//PictureBox終了 Bitmap bmpをそのまま使うのなら PictureBox.Image=bmp; //PictureBox表示中 PictureBox.Image.Dispose();//PictureBox終了 if (bmp!=null) bmp.Dispose();//bmpが残っていたら破棄 こう書けば確実にDisposeできてエラーにもならない または PictureBox.Image=new Bitmap(bmp); bmp.Dispose();//コピーされたので不要 //PictureBox表示中 PictureBox.Image.Dispose(); それぞれDispose後にPictureBox.Imageとbmpにnull入れてGC.Collect(); したら確実にメモリ消費が減るのは試した見たことがある 後は自分でやってみて様子見ながら改良して
|
|