下面的代码在while循环中写入一个文本文件,有时它会产生一个错误,说“该进程无法访问该文件,因为它正被另一个进程使用”等...“该错误通常发生在"using (FileStream fs = File.OpenRead(filePath))”上,有没有一种方法可以检查该文件不再被使用,或者有一种方法可以正确地处置文本编写器?
if (File.Exists(filePath))
{
TextWriter sud = File.AppendText(filePath);
sud.WriteLine(GenericLIST[testloop].ToString());
sud.Close();
sud.Dispose();
using (FileStream fs = File.OpenRead(filePath))
{
using (StreamReader sr = new StreamReader(fs))
{
while (!sr.EndOfStream)
{
richTextBox1.AppendText(sr.ReadLine());
}
}
}
}
else
{
TextWriter sud = new StreamWriter(filePath);
sud.WriteLine(GenericLIST[testloop].ToString());
sud.Close();
sud.Dispose();
}发布于 2010-08-15 05:20:32
这里发生的情况是,您释放了您附加的文件以再次读取它。
在sud.Close()和using(FileStream fs = File.OpenRead(filePath))之间,您的计算机上运行的任何其他进程都可以查看并锁定您的文件。索引服务或防病毒程序经常会对此负责。
尝试在文件夹上禁用索引,看看您的bug是否仍然如此频繁地发生。
https://stackoverflow.com/questions/3485123
复制相似问题