另一个进程正在使用 StreamWriter 文件 - 写入速度太快?
StreamWriter file in use by another process - Writing to fast too frequently?
我在使用 StreamWriter 时收到一个错误,指出该文件正在被另一个进程使用,但我相信这可能取决于我写入文件的速度,或者更具体地说,是文件的速度 opened/closed.
代码如下:
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,则这些行之间的间隔只有几毫秒。
我收到这个错误是因为写入文件的速度吗?有没有更好的方法来处理写入日志文件?
无视这个,我傻
过去 2 年我没有遇到过这个问题,我收到错误是因为我从不同的线程写入同一个文件,这是重叠的地方。
文件实际上正在被另一个进程使用,同一个进程只是不同的线程。
我在使用 StreamWriter 时收到一个错误,指出该文件正在被另一个进程使用,但我相信这可能取决于我写入文件的速度,或者更具体地说,是文件的速度 opened/closed.
代码如下:
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,则这些行之间的间隔只有几毫秒。
我收到这个错误是因为写入文件的速度吗?有没有更好的方法来处理写入日志文件?
无视这个,我傻
过去 2 年我没有遇到过这个问题,我收到错误是因为我从不同的线程写入同一个文件,这是重叠的地方。
文件实际上正在被另一个进程使用,同一个进程只是不同的线程。