フォルダ内のすべてのテキストファイルのパスをリストに読み込むアプリケーションで作業しています。各ファイルを読み取り、一時出力ファイルを作成し、元のファイルを一時出力ファイルで上書きし、一時出力ファイルを削除します。C# - コピーして上書きした後にファイルを削除することができません
{"The process cannot access the file '' because it is being used by another process."}
は、エラーがファイルごとに発生しませんが、ほんの数:私は次のエラーのため、一時出力ファイルを削除することができません
foreach (string lF in multipleFiles)
{
int lineNumber = 0;
using (StreamReader sr = new StreamReader(lF))
{
using (StreamWriter sw = new StreamWriter(lF + "Output"))
{
while (!sr.EndOfStream)
{
//LOGIC
sw.WriteLine(line);
}
}
}
File.Copy(lF + "Output", lF, true);
//File.Delete(lF + "Output");
try
{
File.Delete(lF + "Output"); <--- ERROR HERE
}
catch(Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
:
後
は私のコードです。ファイルは開いていないか、他のアプリケーションによって使用されていません。一時ファイルはどのように削除できますか?
UPDATE:File.Delete前に査読
Does FileStream.Dispose close the file immediately?に追加のThread.sleep(1)()、問題がまだ存在しています。睡眠の値を5に引き上げようとしました。
関連があります:https://stackoverflow.com/questions/6350224/does-filestream-dispose-close-the-file-immediately –
@someone Thread.Sleep(1)を追加しようとしました。エラーは引き続き発生します。私はさらに睡眠の値を5に増やしてみました。 – Tango
50歳か500歳ですか? 1または5ミリ秒はあまりありません。 –