当我将信息写入文件并且程序的多个副本为runnnig时,出现此错误:
该进程无法访问文件'C:\ logs \ log.txt',因为它正在被另一个进程使用。
代码是:
// create a writer and open the file
TextWriter tw2 = File.AppendText(@"C:\logs\log.txt");
// write a line of text to the file
tw2.WriteLine(Environment.NewLine);
tw2.WriteLine(DateTime.Now + " " + "IN INFOSERVCALLER");
tw2.Flush();
如何以正确的方式做到这一点?
最佳答案
始终将此类代码封装在using
语句中
using(TextWriter tw2 = File.AppendText(@"C:\logs\log.txt"))
{
tw2.WriteLine(Environment.NewLine);
tw2.WriteLine(DateTime.Now + " " + "IN INFOSERVCALLER");
//tw2.Flush(); // No need to flush because close alway flush.
}
using
语句在块末尾调用tw2.Close()。同样,如果您在块内遇到异常。
现在,如果您的应用程序的其他实例由于某种原因失败,则该文件不再被锁定