繁体   English   中英

C# StreamWriter 在追加后未关闭文件

[英]C# StreamWriter not closing the file after appending

所以我使用了一个计时器,它每分钟将日志附加到一个日志文件中。 出于某种原因,我收到文件正在使用的错误,即使它不应该使用。 它工作了两次,然后第三次我出错了。

using (StreamWriter sw = File.AppendText("logs.txt"))
{
     sw.WriteLine("My logs");
}

这是执行上述代码的计时器

System.Timers.Timer timer = new System.Timers.Timer(TimeSpan.FromMinutes(1).TotalMilliseconds);
timer.Elapsed += (s,e) => { WriteToLog(); };
timer.AutoReset = true;

timer.Start();

错误:该进程无法访问该文件,因为它正被另一个进程使用。

您可以使用以下代码

using (var stream = File.Open(path, FileMode.Open, FileAccess.Write, FileShare.Read))

为了写入用另一个进程打开的文件

这是您想要做的事情的基本示例。

void Main()
{
        System.Timers.Timer timer = new System.Timers.Timer(TimeSpan.FromMinutes(1).TotalMilliseconds);
        timer.Elapsed += WriteToLog;
        timer.Enabled = true;
}

// Define other methods and classes here
public void WriteToLog(Object source, System.Timers.ElapsedEventArgs e)
{
    var myString = "Put your logging data here: " + DateTime.Now.ToString();
    try
    {
        using (StreamWriter file = File.AppendText(@"D:\Log.txt"))
        {
            file.WriteLine(myString);
            file.Flush();
            file.Close();
        }
    }
    catch(Exception ex)
    {
        //Do some error catching here if needed.
    }

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM