我正在为在 Windows Azure 中运行的应用程序编写一个全局错误处理程序/记录器。当应用程序中发生错误时,会执行许多需要以原子方式发生的操作。我需要防止在前一个错误完成之前记录错误。同时,我希望根据需要读取日志。
我最初的想法是使用监视器/锁定并仅锁定错误写入。这样,读取根本不会受到抑制。我想知道 ReaderWriterLockSlim 是否更合适。我不能说我真正理解一种方法与另一种方法之间的价值。
我是否应该创建一个 ReaderWriterLockSlim 并执行以下操作(读取包含在 EnterReadLock 中)...
public static void LogError(Exception exception)
{
_lock.EnterWriteLock();
...
_lock.ExitWriteLock();
}
还是我只是简单地执行以下操作,仅锁定写入部分:
public static void LogError(Exception exception)
{
lock (someStaticLock)
{
...
}
}
任何想法/建议将不胜感激。