<PackageReference Include="Castle.Windsor" Version="6.0.0" />

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; } } } }