我在StreamWriter上遇到错误,该文件正由另一个进程使用,但我相信它可能会降低到我写文件的速度,或者更具体地说是它的速度被打开/关闭。
代码如下:
public static void writeLog(string msg)
{
StreamWriter log;
string currentMonth = DateTime.Now.ToString("MMM");
string currentYear = DateTime.Now.ToString("yyyy");
string directoryName = currentMonth + "-" + currentYear;
if (!Directory.Exists(@"C:\AutoSkill\LogFiles\" + directoryName + @"\"))
{
Directory.CreateDirectory(@"C:\AutoSkill\LogFiles\" + directoryName + @"\");
}
DateTime dt = DateTime.Now;
string date = dt.ToString("dd-MM-yy");
if (!File.Exists(@"C:\AutoSkill\LogFiles\" + directoryName + @"\" + date + ".txt"))
{
log = new StreamWriter(@"C:\AutoSkill\LogFiles\" + directoryName + @"\" + date + ".txt");
}
else
{
log = File.AppendText(@"C:\AutoSkill\LogFiles\" + directoryName + @"\" + date + ".txt");
}
try
{
log.WriteLine(msg);
}
catch (Exception err)
{
Console.WriteLine("There was an error writing to the log file.");
Console.WriteLine(err.Message);
}
log.Close();
}
所以我每次写完日志都会关闭日志,但是我会把我的输出从控制台屏幕写到文件中以跟踪实际发生的事情;如果所采取的动作很快或只是返回null,有时行间距只有几毫秒。
由于写入文件的速度,我是否收到此错误?有没有更好的方法来处理写日志文件?
答案 0 :(得分:0)
忽视这一点,我愚蠢。
我在过去的两年里没有遇到过这个问题,我收到了错误,因为我是从不同的线程写入同一个文件,这是重叠的地方。 / p>
该文件实际上正被另一个进程使用,同一个进程只是一个不同的线程。