[C#] ファイルを開こうとするとIOException(別のプロセスで使用されている…)が表示されるとき
プログラムが常時掴んでいるログファイルや設定ファイル、WordやExcelファイルなどは、FileStreamから取得しようとすると、以下のエラーとなります。
例外
System.IO.IOException
「別のプロセスで使用されているため、プロセスはファイル ‘*****’ にアクセスできません。」
書き込みできないとは当然として、読み込みくらいはさせてよと思いますよね。
こういったファイルを読むには、引数指定に工夫が必要なようです。
FileStream fs = new FileStream( fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
ポイントは、最後の引数FileShare.ReadWriteです。
読み込みたいだけなので、FileShare.Readと指定してしまいがちですが、Readだと読み込めません。
最後の引数はシンプルなサンプルだと記載しない場合が多いので、知らない人も多いのではないでしょうか。
(私も知りませんでした。。。)
掴んでいるプログラムがどんなロックをしているかによるので、完全ではないのですが、
ちょっとしたビューワを作りたいときには、この指定が有効になると思います。
== ランキングに参加しています。ぜひクリックお願いします ==
OracleClientをdeinstallしようとするとエラーになる Excelでふりがなを振る
参考になりました。ありがとうございます。