2013-11-15 90 views
2

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

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

这是开/写/关闭代码:

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

回答

7

假如没有什么多线程,则问题是与妥善处置。处理流或者实现IDisposable的一般类型的正确方法是将它们包装在using语句中。使用声明确保妥善处理,并使用最后一个区块来确保即使在特殊情况下溪流也被关闭。

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

对所有的流都这样做。

1

您确定没有抛出异常,防止被调用吗?无论哪种方式,这是更好的代码:

using (System.IO.StreamWriter file = new System.IO.StreamWriter(saveFileLocation.Text)) 
{ 
    file.WriteLine(account); 
} 
2

使用using陈述或try{ }finally{ file.Close(); }