タイムアウトに TimeSpan 値を使用して、リーダー ロックを取得します。
Overloads Public Sub AcquireReaderLock( _
ByVal timeout As TimeSpan _)
[C#]
public void AcquireReaderLock(TimeSpantimeout);
[C++]
public: void AcquireReaderLock(TimeSpantimeout);
[JScript]
public function AcquireReaderLock(
timeout : TimeSpan);
パラメータ
- timeout
タイムアウト時間を指定する TimeSpan 。
例外
例外の種類 | 条件 |
---|---|
ApplicationException | timeout は、ロック要求が許可される前に期限が切れます。 |
ArgumentOutOfRangeException | timeout は、-1 ミリ秒以外の負の値を指定します。 |
解説
別のスレッドがライタ ロックを保持している場合、または 1 つ以上のスレッドがライタ ロックを待機している場合、 AcquireReaderLock はブロックします。
メモ 現在のスレッドがライタ ロックを既に保持している場合、リーダー ロックは取得されません。代わりに、ライタ ロックのロック カウントがインクリメントされます。これによって、スレッドが自身のライタ ロックでブロックすることを防ぐことができます。この結果は AcquireWriterLock を呼び出した場合とまったく同じです。この場合、ライタ ロックを解放するには、追加の ReleaseWriterLock 呼び出しが必要となります。
AcquireReaderLock は、再帰的なリーダー ロック要求をサポートします。つまり、1 つのスレッドは AcquireReaderLock を複数回呼び出すことができます。ロック カウントは呼び出しのたびにインクリメントされます。 ReleaseReaderLock は、 AcquireReaderLock を呼び出した回数だけ呼び出す必要があります。代わりに、 ReleaseLock を呼び出すことによって、ロック カウントをすぐに 0 に設定することもできます。
再帰的なロック要求は必ずすぐに許可されます。このとき、スレッドがリーダー キューに置かれることはありません。ただし、ライタ ロックの要求を長時間にわたってブロックしないためにも、再帰的なロック要求は注意して使用してください。
有効なタイムアウト値については、 ReaderWriterLock を参照してください。
必要条件
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ
参照
ReaderWriterLock クラス | ReaderWriterLock メンバ | System.Threading 名前空間 | ReaderWriterLock.AcquireReaderLock オーバーロードの一覧 | スレッド処理 | ReaderWriterLock