3

asp.NetアプリでFile.Copy(..,..)メソッドを使用しています.system.IO.IOException: The process cannot access the file ..because it is being used by another process.

そのための回避策

前もって感謝します

4

3 に答える 3

3

a) ファイルを使用しているプロセスを停止するか、b) ファイルが使用されなくなるまで待つ必要があります。

File Lockingに関するこのウィキペディアのエントリを読む必要があります。ファイルのロックがどのように機能するかについてよりよく理解できる「In Microsoft Windows」段落に特に注意してください。

別のプログラムが共有モードパラメーターを使用してファイルを開き、ファイルが読み取りアクセスでも共有されないことを示している場合アプリケーションからコピー操作を強制するために実際にできることは何もありません。

あなたが「神を演じる」ことに熱心で、あなたが関係しているファイルのロックを保持している可能性のあるプロセスを強制終了したい場合は、この中の情報を使用してどのプロセスがあなたのファイルを保持しているかを見つけようとすることができます.スレッド: .NET を使用してファイルをロックしているプロセスを調べるにはどうすればよいですか?

より良い戦略は、おそらく、コピーしているファイルがロックされている理由と、ファイルに制限的なファイル許可を設定するか、競合しているソフトウェアを再構成することによって、ロックの競合を回避できるかどうかを調査することです。ファイルのロック。たとえば、ウイルス対策プログラムがアプリで使用されるフォルダー構造をときどきスキャンする場合、その特定のフォルダーを無視するようにソフトウェアに指示できます。

実行時間が重要でない場合は、コピー操作を遅らせたり延期したりできます。単純な戦略は、代わりに次の反復でそのロックされたファイルを取得することです。別の戦略には、.NET でファイルのロックが解除されるまで待機するFileSystemWatcherというアイデアを使用して、クラスなどからイベントをリッスンすることが含まれます。

于 2011-04-05T09:24:45.290 に答える
1

これを試して

File.Open(name, FileMode.Open, FileAccess.Read, FileShare.None);

詳細については、このリンクをチェックしてください

于 2011-04-05T09:33:35.133 に答える
0

どのプロセスがロックされているかを確認するには、 http://www.filehippo.com/download_unlocker/を試してください。

于 2011-04-05T09:26:48.463 に答える