当我将信息写入文件并且程序的多个副本为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()。
同样,如果您在块内遇到异常。

现在,如果您的应用程序的其他实例由于某种原因失败,则该文件不再被锁定

10-02 06:23