2013/12/12

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

「別のプロセスで使用されているため ~ ファイルにアクセスできません」
の原因の可能性のひとつを記します。

System.IO.Move や System.IO.Delete メソッドを使用する際、
(My.Computer.FileSystem.MoveFile,
My.Computer.FileSystem.RenameFile,
My.Computer.FileSystem.DeleteFileなど
ファイル変更関係すべて
VisualBasic クラスも含む)

「別のプロセスで使用されているため、(ファイルパスorディレクトリパス)ファイルにアクセスできません」
と例外が発生する場合、下記が原因かもしれません。

OpenFileDialog あるいは SaveFileDialog オブジェクトの
「RestoreDirectory=True」としている場合、
Disposeで解放をしようともFormを終了するまでは
ファイル(あるいはディレクトリ)がロックされたままです。

RestoreDirectory=False
にすることで解決することができるかもしれません。

また、フォームごとにコピー&ペーストでOpenFileDialog あるいは SaveFileDialog オブジェクトを作成している場合、
Modifer(適用範囲)プロパティが「Friend」または「Public」に設定されているかもしれません。
これを「Private」にすれば、個々のフォームでFileDialogが解放されるため、
[他プロセスによる使用中]例外が発生することが無くなるかもしれません。

初歩的且つ慎重さに欠けるミスに他なりませんが、
意外に陥りやすいエラーだと思います。
コピー元を信用してしまうと発生するミスですね。

0 件のコメント:

コメントを投稿