我已经制作了记录器,它记录了一个字符串,一个带有静态的静态类,因此我可以从整个项目中调用它,而无需创建它的实例。很好,但我想让它在单独的线程中运行,因为访问文件需要时间
这有可能以某种方式实现吗?最好的方法是什么?
它有点简短的描述,但我希望这个想法很清楚。如果没有,请告诉我。
提前致谢!
顺便说一句,我也欢迎对我的代码进行任何其他改进,但我感觉并非一切都尽可能高效:
internal static class MainLogger
{
internal static void LogStringToFile(string logText)
{
DateTime timestamp = DateTime.Now;
string str = timestamp.ToString("dd-MM-yy HH:mm:ss ", CultureInfo.InvariantCulture) + "\t" + logText + "\n";
const string filename = Constants.LOG_FILENAME;
FileInfo fileInfo = new FileInfo(filename);
if (fileInfo.Exists)
{
if (fileInfo.Length > Constants.LOG_FILESIZE)
{
File.Create(filename).Dispose();
}
}
else
{
File.Create(filename).Dispose();
}
int i = 0;
while(true)
{
try
{
using (StreamWriter writer = File.AppendText(filename))
{
writer.WriteLine(str);
}
break;
}
catch (IOException)
{
Thread.Sleep(10);
i++;
if (i >= 8)
{
throw new IOException("Log file \"" + Constants.LOG_FILENAME + "\" not accessible after 5 tries");
}
}
}
}
}
enter code here