public void RestoreLock(TestLockCookie tlc, int expectedFailureHResult = 0)
{
Assert.NotNull(tlc);
Assert.NotEqual(TimeoutExceptionHResult, expectedFailureHResult);
PerformLockAction(
expectedFailureHResult,
true /* isBlockingOperation */,
() => _rwl.RestoreLock(ref tlc._lockCookie),
() =>
{
Assert.Equal(0, ThreadReaderLevel);
Assert.Equal(InvalidThreadID, _writerThreadID);
Assert.Equal(0, _writerLevel);
ThreadReaderLevel = tlc._readerLevel;
_writerLevel = tlc._writerLevel;
if (_writerLevel != 0)
{
Assert.Equal(InvalidThreadID, _writerThreadID);
_writerThreadID = Environment.CurrentManagedThreadId;
++_writerSeqNum;
}
});
}