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