public void ReleaseReaderLock()
{
lock (this) {
if (HasWriterLock ()) {
ReleaseWriterLock ();
return;
}
else if (state > 0) {
object read_lock_count = reader_locks [Thread.CurrentThreadId];
if (read_lock_count != null) {
ReleaseReaderLock ((int)read_lock_count, 1);
return;
}
}
throw new ApplicationException ("The thread does not have any reader or writer locks.");
}
}