複数の画像ファイルを一度にトリミングして保存するアプリPixtrimをつくった22 メモリの開放し過ぎてた
前回の変更で別の不具合が出ていたのを直した
クリップボードから取り込んだ画像を保存した後に
リストにある画像を選択するとエラーになっていた
消しちゃいけないものまでDisposeでメモリから削除していて
これを直したからメモリ使用量は増えるはず
なんだけどちょっとテストした限りではあんまり増えた感じしない
クリップボードから取り込んだ画像は名前を付けてImgCollectionっていうCollectionにまとめておいて、画像保存するときにそこから1枚づつ取り出している
この取り出し方が良くなかった
Dim obj = ImgCollection(myFormSetting.ListBox1.Items(i))
Dim img As Image = obj
こう(意味不明な処理)だったのを
Dim img As New Bitmap(DirectCast(ImgCollection(myFormSetting.ListBox1.Items(i)), Image))
こうした、あんまりわかっていないけどこれでエラーが出なくなって選択した画像が表示されるようになった
保存処理が終わったらimgをDispose()している
リストから選択された画像表示するときはCollectionから取り出している
前回はCollectionの中の画像まで消えていたから、その消えた画像を表示しようとしてエラーになっていた
今回はNewでBitmapを作成して、そこにCollectionの画像をコピペしたからDisposeで消えるのはコピペした画像だけどコピペ元のCollectionの中の画像は消えないってことかなあ
でも直ったと思う()
ダウンロード
ヤフーボックス
OneDrive