我正在阅读,然后写入文本文件。我在我的程序的多个部分中执行此操作。写完之后,我总是关闭它(我使用streamreader / writer)。在关闭和下一次打开之间通常有大约3秒钟。
但是,第二次我需要写入同一个文件时,我总是会收到拒绝访问错误,因为另一个进程正在使用它。在任何其他进程中都没有使用它,重新启动我的程序让我可以从中读取它。
这是打开/写入/关闭代码:
System.IO.StreamWriter file = new System.IO.StreamWriter(saveFileLocation.Text);
file.WriteLine(account);
file.Close();
答案 0 :(得分: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
为你的所有流做这件事。
答案 1 :(得分:2)
使用using
语句或try{ }finally{ file.Close(); }
答案 2 :(得分:1)
你确定没有抛出异常,阻止被调用吗?无论哪种方式,这都是更好的代码:
using (System.IO.StreamWriter file = new System.IO.StreamWriter(saveFileLocation.Text))
{
file.WriteLine(account);
}