2

我正在阅读,然后写入文本文件。我在我的程序的多个部分执行此操作。写完后,我总是关闭它(我使用流式阅读器/写入器)。关闭和下次打开之间通常有大约 3 秒的时间。

但是,我第二次需要写入同一个文件时,总是会收到拒绝访问错误,因为另一个进程正在使用它。在任何时候都没有任何其他进程使用它,并且重新启动我的程序可以让我从中读取。

这是打开/写入/关闭代码:

System.IO.StreamWriter file = new System.IO.StreamWriter(saveFileLocation.Text);
file.WriteLine(account);
file.Close();
4

3 回答 3

7

假设没有多线程,那么问题在于适当的处理。处理流或实现的一般类型的正确方法IDisposable是将它们包装在 using 语句中。using 语句确保正确处理,并使用 finally 块来确保即使在异常情况下也关闭流。

using(var file = new System.IO.StreamWriter(saveFileLocation.Text))
{
  //do work...
  file.WriteLine(account);
}//when file goes out of scope it will close

对所有流执行此操作。

于 2013-11-15T04:49:23.127 回答
2

使用using声明或try{ }finally{ file.Close(); }

于 2013-11-15T04:50:02.240 回答
1

您确定没有引发异常,从而阻止调用 close 吗?无论哪种方式,这是更好的代码:

using (System.IO.StreamWriter file = new System.IO.StreamWriter(saveFileLocation.Text))
{
    file.WriteLine(account);
}
于 2013-11-15T04:49:26.607 回答