public void DowngradeLockAllowsReadLock() { var myLock = new AsyncReaderWriterLockSlim(); myLock.EnterWriteLock(); Assert.IsFalse(myLock.TryEnterWriteLock(0)); Assert.IsFalse(myLock.TryEnterReadLock(0)); // After downgrading the lock and after the try to get the write lock is canceled, // it should be possible to enter another read lock. myLock.DowngradeWriteLockToReadLock(); Assert.IsFalse(myLock.TryEnterWriteLock(0)); Assert.IsTrue(myLock.TryEnterReadLock(0)); myLock.ExitReadLock(); myLock.ExitReadLock(); }