【发布时间】:2019-04-26 00:32:07
【问题描述】:
我有一个使用记录器的应用程序。 同一个记录器可以从同一个文件中的不同程序写入。 它用于长期处决。
引用的行是
swLogger.WriteLine(newLines);
我在各种在线线程中发现了同样的问题,主要是使用 Console.WriteLine。 我必须承认——除了阅读它们——我还没有完全理解这个问题。
因为它只发生过一次,我无法重现该问题。
话虽如此 - 如果我对问题的理解没有错误 - 是否可以将解决方案放在包含整个例程的 lock 指令中?
代码是:
public static bool WriteLog(string newLines, bool AddDateTime = true, bool ShowMessageBox = false)
{
try
{
long max = MaxLogSizeMB * 1024 * 1024;
if (lenTot > max)
{
if (swLogger != null)
swLogger.Close();
File.Delete(FileName);
swLogger = new StreamWriter(FileName);
lenTot = 0;
}
if (AddDateTime)
newLines = "[" + DateTime.Now.ToString("dd/MM/yy HH:mm:ss.fff") + "] " + newLines;
lenTot += newLines.Length + 2;//Environment.Newline
swLogger.WriteLine(newLines);<-----
return true;
}
catch (Exception exc)
{
return false;
}
}
所以记录器流在开始时打开,一直写入并在结束时关闭。
提前感谢您的帮助
帕特里克
【问题讨论】:
标签: c# wpf exception thread-safety streamwriter