画像ファイルをロードしてImageオブジェクトを作成するために以下のようなコードを書いた。
1 2 |
string imgFile = @"C:\Temp\Test.png"; Image image = Image.FromFile(imgFile); |
すると問題が。ロード完了しても画像ファイルを削除することができないのだ。どうやらファイルがロック(占有)されているみたい。
ネットを調べても「これだ」といった情報はなかなか見つからず。しばらく探したら参考サイトの記事がヒットした。Image.FromFile()メソッドの仕様ということなのかなぁ。
回避するには、以下のようにファイルストリームから読み取るなどして、Image.FromFile()メソッドを使わないこと。
1 2 3 4 |
string imgFile = @"C:\Temp\Test.png"; FileStream fs = new FileStream(imgFile, FileMode.Open, FileAccess.Read); Image image = Image.FromStream(fs); fs.Close(); |
参考サイト
表示中の画像ファイルが削除できない問題の解決法 – .NET Tips (VB.NET,C#…)
https://dobon.net/vb/dotnet/graphics/drawpicture2.html