【发布时间】:2017-09-30 08:18:31
【问题描述】:
我正在开发一个应用程序,它将所有文本文件的路径从一个文件夹读取到一个列表中。它读取每个文件,创建一个临时输出文件,用临时输出文件覆盖原始文件并删除临时输出文件。
以下是我的代码:
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());
}
}
由于以下错误,我无法删除临时输出文件:
{"进程无法访问文件'',因为它正在 被另一个进程使用。"}
错误不会发生在每个文件上,而只会发生在少数文件上。没有任何文件被打开或被任何其他应用程序使用。
如何删除临时文件?
更新:参考Does FileStream.Dispose close the file immediately?
在 File.Delete() 之前添加了 Thread.Sleep(1),问题依然存在。尝试将睡眠值增加到 5。没有运气。
【问题讨论】:
-
@someone 我尝试添加 Thread.Sleep(1)。错误仍然发生。我什至尝试将睡眠值增加到 5。
-
50 或 500 怎么样? 1 或 5 毫秒不算多。
-
@someone 它似乎工作。雷内的回答也是如此。感谢您为我指明正确的方向。我不知道 bitlocker 或防病毒软件会对它产生影响。
标签: c#