【C#】別のプロセスで使用されているため、プロセスはファイル~にアクセスできません。 | 本を読もう。ゲームをしよう。愚痴をいおう。

本を読もう。ゲームをしよう。愚痴をいおう。

嫌なことは全力回避。好きなことには全力投球。

画像ファイルを削除しようとすると、

「別のプロセスで使用されているため、プロセスはファイル~にアクセスできません。」

というエラーが出てデバックが通りませんでした。


自分がこのエラーが出たパタンは以下の通りです。


①クリップボードに画像を送った後、画像ファイルを削除しようとした時
②PictureBoxに画像を表示させた後、画像ファイルを削除しようとした時


②についてはこちらへ


//画像ファイルを削除
foreach (var item in Directory.GetFiles(FileName))
{
  //ここでエラー
  System.IO.File.Delete(item);
}


何でだと思っていろいろ調べたところ、下記のブログ様で解決できました。
大変助かりました。

[C#]System.IO.File.Delete()で別のプロセスで使用されているため、プロセ



結論としては、
FileStreamを使用してOpenした場合、きちんとCloseしないと
FileStreamがデータを保持したままになってしまうということでした。

なので、削除しようとしてもまだ他の奴が保持しているという
エラーとなっていたようです。


勉強になりました・・・。



また、画像データを表示させる場合は、フルパスを直接指定して、
Bitmapをインスタンスするよりも、Streamを用いて表示させた方が、
Closeできるので、タイトルのエラーメッセージが表示されなくて
いいと思います。




★ブログランキング始めました★
★ぺちぺち叩いていただけると幸せです★

サラリーマン ブログランキングへ