System.Threading.Tests.ReaderWriterLockTests.TestReaderWriterLock.ReleaseReaderLock C# (CSharp) Method

ReleaseReaderLock() public method

public ReleaseReaderLock ( int expectedFailureHResult ) : void
expectedFailureHResult int
return void
            public void ReleaseReaderLock(int expectedFailureHResult = 0)
            {
                PerformLockAction(
                    expectedFailureHResult,
                    false /* isBlockingOperation */,
                    () => _rwl.ReleaseReaderLock(),
                    () =>
                    {
                        if (_writerThreadID == Environment.CurrentManagedThreadId)
                        {
                            // Write lock is already held, release a write lock instead
                            Assert.NotEqual(0, _writerLevel);
                            --_writerLevel;
                            if (_writerLevel == 0)
                            {
                                _writerThreadID = InvalidThreadID;
                            }
                        }
                        else
                        {
                            Assert.NotEqual(0, ThreadReaderLevel);
                            --ThreadReaderLevel;
                        }
                    });
            }