ファイルを削除しようとすると、次の例外が発生します。
別のプロセスによって使用されているため、プロセスはファイル ''にアクセスできません。
私のコードは次のようになります:
string[] files = Directory.GetFiles(@"C:\SEDocumentConverter\SOURCE");
foreach (string file in files)
{
File.Delete(file);
}
どうすればこの問題を解決できますか?
現在別のプロセスで使用されているファイルを削除する方法はありません。ファイルを削除する前に、まずそのファイルを開いているプログラムをすべて閉じる必要があります。
どのプログラムであるかがまだわからない場合は、 Handle または Process Explorer を使用して把握できます。
Windows MoveFileEx 関数をP/Invokeし、宛先名がNULLのMOVEFILE_DELAY_UNTIL_REBOOTフラグを使用できます。これにより、再起動時にファイルが削除されます。
もう1つの方法は、ファイルに対して開いているすべてのハンドルを見つけて、それらを強制的に閉じることです。
ファイルを使用していたアプリには適していません。
SysInternalsProcessExplorerを使用してUIでそれを試すことができます。
トピックから少し外れています:しかし、コードから、フォルダのすべてのファイルを削除しようとしているようです。それらを1つずつ削除する代わりに、pathという名前の文字列に含まれているディレクトリを削除する別のメソッドDirectory.Delete(path、True)があります。次に、必要に応じてディレクトリを再作成できます。しかし、あなたの問題はここでも続くかもしれません。