public void ExitReadLock()
{
EnterMyLock();
if (owners < 1)
{
ExitMyLock();
throw new SynchronizationLockException("Releasing lock and no read lock taken");
}
--owners;
--GetReadLockDetails(Thread.CurrentThread.ManagedThreadId, false).ReadLocks;
ExitAndWakeUpAppropriateWaiters();
}