WindowsAzureで実行されているアプリケーション用のグローバルエラーハンドラー/ロガーを作成しています。アプリケーションでエラーが発生すると、アトミックに発生する必要のあるいくつかの操作が実行されます。前のエラーが完了するまでエラーがログに記録されないようにする必要があります。その間、必要に応じてログの読み取りを実行したいと思います。
私の最初の考えは、モニター/ロックを使用して、エラー書き込みのみをロックすることでした。そうすれば、読み取りがまったく禁止されません。ReaderWriterLockSlimの方が適切かどうか疑問に思いました。あるアプローチと他のアプローチの価値を本当に理解しているとは言えません。
ReaderWriterLockSlimを作成し、次のようなことを行う必要があります(読み取りはEnterReadLockでラップされます)...
public static void LogError(Exception exception)
{
_lock.EnterWriteLock();
...
_lock.ExitWriteLock();
}
または、書き込みセクションのみをロックして、次のようなことを行うだけですか。
public static void LogError(Exception exception)
{
lock (someStaticLock)
{
...
}
}
任意の考え/アドバイスをいただければ幸いです。