ReaderWriterLockSlim.TryEnterUpgradeableReadLock メソッド

定義

オプションのタイムアウトを使用して、アップグレード可能モードでロックを開始しようとします。

オーバーロード

名前 説明
TryEnterUpgradeableReadLock(Int32)

オプションのタイムアウトを使用して、アップグレード可能モードでロックを開始しようとします。

TryEnterUpgradeableReadLock(TimeSpan)

オプションのタイムアウトを使用して、アップグレード可能モードでロックを開始しようとします。

TryEnterUpgradeableReadLock(Int32)

オプションのタイムアウトを使用して、アップグレード可能モードでロックを開始しようとします。

public:
 bool TryEnterUpgradeableReadLock(int millisecondsTimeout);
public bool TryEnterUpgradeableReadLock(int millisecondsTimeout);
member this.TryEnterUpgradeableReadLock : int -> bool
Public Function TryEnterUpgradeableReadLock (millisecondsTimeout As Integer) As Boolean

パラメーター

millisecondsTimeout
Int32

待機するミリ秒数、または無期限に待機する -1 (Infinite)。

返品

true 呼び出し元のスレッドがアップグレード可能モードに入った場合は false

例外

RecursionPolicy プロパティがNoRecursionされ、現在のスレッドが既にロックに入っています。

-または-

現在のスレッドは最初に読み取りモードでロックに入ったため、アップグレード可能モードに入ろうとするとデッドロックが発生する可能性があります。

-または-

再帰数がカウンターの容量を超えます。 この制限は非常に大きいため、アプリケーションで発生することはありません。

millisecondsTimeoutの値は負の値ですが、Infinite (-1) と等しくありません。これは、許容される唯一の負の値です。

ReaderWriterLockSlim オブジェクトが破棄されました。

注釈

millisecondsTimeoutが 0 (ゼロ) の場合、このメソッドはロック状態を確認し、目的の状態が使用できない場合は直ちにfalseを返します。

通常、スレッドが読み取りモードで ReaderWriterLockSlim によって保護されているリソースにアクセスするが、特定の条件が満たされた場合に書き込みモードに入る必要がある場合は、アップグレード可能モードを使用します。 アップグレード可能モードのスレッドは、書き込みモードにアップグレードすることも、読み取りモードにダウングレードすることもできます。

特定の時点でアップグレード可能モードでロックに入ることができるスレッドは 1 つだけです。 スレッドがアップグレード可能モードで、書き込みモードに入るのを待機しているスレッドがない場合、アップグレード可能モードを待機しているスレッドがある場合でも、他のスレッドの任意の数が読み取りモードに入ることができます。

1 つ以上のスレッドが書き込みモードの開始を待機している場合、 TryEnterUpgradeableReadLock メソッドを呼び出すスレッドは、それらのスレッドがタイムアウトするか、書き込みモードに入ってから終了するか、呼び出し元のスレッドのタイムアウト間隔が切れるまでブロックします。

Note

ロックで再帰が許可されている場合、アップグレード可能モードでロックに入ったスレッドは、他のスレッドが書き込みモードに入るのを待機している場合でも、再帰的にアップグレード可能モードに入ることができます。

適用対象

TryEnterUpgradeableReadLock(TimeSpan)

オプションのタイムアウトを使用して、アップグレード可能モードでロックを開始しようとします。

public:
 bool TryEnterUpgradeableReadLock(TimeSpan timeout);
public bool TryEnterUpgradeableReadLock(TimeSpan timeout);
member this.TryEnterUpgradeableReadLock : TimeSpan -> bool
Public Function TryEnterUpgradeableReadLock (timeout As TimeSpan) As Boolean

パラメーター

timeout
TimeSpan

待機する間隔、または無期限に待機する -1 ミリ秒。

返品

true 呼び出し元のスレッドがアップグレード可能モードに入った場合は false

例外

RecursionPolicy プロパティがNoRecursionされ、現在のスレッドが既にロックに入っています。

-または-

現在のスレッドは最初に読み取りモードでロックに入ったため、アップグレード可能モードに入ろうとするとデッドロックが発生する可能性があります。

-または-

再帰数がカウンターの容量を超えます。 この制限は非常に大きいため、アプリケーションで発生することはありません。

timeoutの値は負の値ですが、-1 ミリ秒と等しくありません。これは、許容される唯一の負の値です。

-または-

timeoutの値が Int32.MaxValue ミリ秒を超える。

ReaderWriterLockSlim オブジェクトが破棄されました。

注釈

timeoutが 0 (ゼロ) の場合、このメソッドはロック状態を確認し、目的の状態が使用できない場合は直ちにfalseを返します。

スレッドが通常、読み取りモードで ReaderWriterLockSlim によって保護されているリソースにアクセスするが、特定の条件が満たされた場合に書き込みモードに入る必要がある場合は、アップグレード可能モードを使用します。 アップグレード可能モードのスレッドは、書き込みモードにアップグレードすることも、読み取りモードにダウングレードすることもできます。

特定の時点でアップグレード可能モードでロックに入ることができるスレッドは 1 つだけです。 スレッドがアップグレード可能モードで、書き込みモードに入るのを待機しているスレッドがない場合、アップグレード可能モードを待機しているスレッドがある場合でも、他のスレッドの任意の数が読み取りモードに入ることができます。

1 つ以上のスレッドが書き込みモードの開始を待機している場合、 TryEnterUpgradeableReadLock メソッドを呼び出すスレッドは、それらのスレッドがタイムアウトするか、書き込みモードに入ってから終了するか、呼び出し元のスレッドのタイムアウト間隔が切れるまでブロックします。

Note

ロックで再帰が許可されている場合、アップグレード可能モードでロックに入ったスレッドは、他のスレッドが書き込みモードに入るのを待機している場合でも、再帰的にアップグレード可能モードに入ることができます。

適用対象