misc.log

日常茶飯事とお仕事と

読み込んだイメージがロックされる

発生するだろうな、とは思っていたが、やはり。ImageオブジェクトにFromFileを使ってイメージを取り込むと、何も考えずに元のファイルを読もうとしたときに「別のプロセスが使用中」とのエラーが出て削除できない。おそらく、

  • ファイルを閉じる
  • ファイルストリームなどを利用する

といった対処が必要なんだろうな....
やはり、FromStreamメソッドがある。これを使って下記のようにソースを書き換えることで対応完了。

Dim sourceStream As New IO.FileStream(pFileName, IO.FileMode.Open, IO.FileAccess.Read)

Dim imageData As Image = Image.FromStream(sourceStream)
'Dim imageData As Image = Image.FromFile(pFileName)
sourceStream.Close()

注意するのは、ストリームのクローズを忘れないようにすること。これをやらないと、結局同じことになる。