SlimWriteLockHolder
using System;
using System.Threading;
namespace Castle.MicroKernel.Internal
{
internal class SlimWriteLockHolder : ILockHolder, IDisposable
{
private readonly ReaderWriterLockSlim locker;
private bool lockAcquired;
public bool LockAcquired => lockAcquired;
public SlimWriteLockHolder(ReaderWriterLockSlim locker, bool waitForLock)
{
this.locker = locker;
if (waitForLock) {
locker.EnterWriteLock();
lockAcquired = true;
} else
lockAcquired = locker.TryEnterWriteLock(0);
}
public void Dispose()
{
if (LockAcquired) {
locker.ExitWriteLock();
lockAcquired = false;
}
}
}
}