我目前正在尝试编写一个线程安全的记录器类。我不太熟悉这方面的正确设计和最佳实践。我的代码有缺陷吗?
public class WriteStuff
{
private readonly StreamWriter m_Writer;
private readonly object m_WriteLock = new object ();
public WriteStuff(String path)
{
m_Writer = File.CreateText (path);
m_Writer.WriteLine ("x");
m_Writer.Flush ();
}
public void ListenTo(Foo foo)
{
foo.SomeEvent += new EventHandler<SomeArgs> (Foo_Update);
}
private void Foo_Update(object sender, SomeArgs args)
{
lock (m_WriteLock) {
m_Writer.WriteLine (args);
m_Writer.Flush ();
}
}
}
最佳答案
嗯,我觉得没问题;我可能会实现 IDisposable
作为 Close()
文件的一种方式,但是......
当然,您也可以使用任何(许多)预制日志记录框架。
更新:
一个想法:您可能想考虑如果文件已经存在会发生什么;你不想踩踏你的日志......
关于C# 我是否正确使用锁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/721212/