ReaderWriterLock.ReleaseReaderLock メソッド

定義

ロック カウントをデクリメントします。

public void ReleaseReaderLock ();

例外

スレッドがリーダー ロックもライター ロックも保持していません。

次のコード例は、リーダー ロックを取得して解放する方法と、要求がタイムアウトしたときにスローされる例外を処理する方法を示しています。

このコードは、 クラスに対して提供されるより大きな例の ReaderWriterLock 一部です。

// The complete code is located in the ReaderWriterLock class topic.
using System;
using System.Threading;

public class Example
{
   static ReaderWriterLock rwl = new ReaderWriterLock();
   // Define the shared resource protected by the ReaderWriterLock.
   static int resource = 0;
// Request and release a reader lock, and handle time-outs.
static void ReadFromResource(int timeOut)
{
   try {
      rwl.AcquireReaderLock(timeOut);
      try {
         // It is safe for this thread to read from the shared resource.
         Display("reads resource value " + resource);
         Interlocked.Increment(ref reads);
      }
      finally {
         // Ensure that the lock is released.
         rwl.ReleaseReaderLock();
      }
   }
   catch (ApplicationException) {
      // The reader lock request timed out.
      Interlocked.Increment(ref readerTimeouts);
   }
}
}

注釈

ReleaseReaderLock ロック数をデクリメントします。 カウントが 0 に達すると、ロックが解放されます。

注意

スレッドにライター ロックがある場合、 の呼び出しは、 の呼び ReleaseReaderLock 出し ReleaseWriterLockと同じ効果を持ちます。 スレッドにロックがない場合、 を呼び出すと ReleaseReaderLockApplicationExceptionスローされます。

適用対象

製品 バージョン
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

こちらもご覧ください