ReaderWriterLockSlim.TryEnterUpgradeableReadLock Methode

Definition

Versucht, die Sperre im upgradefähigen Modus mit einem optionalen Timeout einzugeben.

Überlädt

Name Beschreibung
TryEnterUpgradeableReadLock(Int32)

Versucht, die Sperre im upgradefähigen Modus mit einem optionalen Timeout einzugeben.

TryEnterUpgradeableReadLock(TimeSpan)

Versucht, die Sperre im upgradefähigen Modus mit einem optionalen Timeout einzugeben.

TryEnterUpgradeableReadLock(Int32)

Versucht, die Sperre im upgradefähigen Modus mit einem optionalen Timeout einzugeben.

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

Parameter

millisecondsTimeout
Int32

Die Anzahl der zu wartenden Millisekunden oder -1 (Infinite) auf unbestimmte Zeit.

Gibt zurück

true wenn der aufrufende Thread in den upgradefähigen Modus wechselt, andernfalls false.

Ausnahmen

Die RecursionPolicy Eigenschaft ist NoRecursion und der aktuelle Thread hat bereits die Sperre eingegeben.

-oder-

Der aktuelle Thread trat zunächst in den Lesemodus ein, und daher würde der Versuch, in den Upgrademodus zu wechseln, die Möglichkeit eines Deadlocks schaffen.

-oder-

Die Rekursionszahl würde die Kapazität des Zählers überschreiten. Der Grenzwert ist so groß, dass Anwendungen niemals darauf stoßen sollten.

Der Wert von millisecondsTimeout ist negativ, ist aber nicht gleich Infinite (-1), bei dem es sich um den einzigen negativen Wert handelt, der zulässig ist.

Das ReaderWriterLockSlim Objekt wurde verworfen.

Hinweise

Wenn millisecondsTimeout 0 (null) ist, überprüft diese Methode den Sperrzustand und gibt false sofort zurück, wenn der gewünschte Zustand nicht verfügbar ist.

Verwenden Sie den upgradefähigen Modus, wenn ein Thread in der Regel auf die Ressource zugreift, die ReaderWriterLockSlim im Lesemodus geschützt ist, aber möglicherweise in den Schreibmodus wechseln muss, wenn bestimmte Bedingungen erfüllt sind. Ein Thread im upgradefähigen Modus kann auf den Schreibmodus oder downgrade in den Lesemodus upgraden.

Es kann immer nur ein Thread eine Sperre im upgradefähigen Modus eingeben. Wenn sich ein Thread im upgradefähigen Modus befindet und es keine Threads gibt, die auf den Schreibmodus warten, kann eine beliebige Anzahl anderer Threads in den Lesemodus wechseln, auch wenn Threads vorhanden sind, die auf den Upgrademodus warten.

Wenn mindestens ein Threads darauf wartet, in den Schreibmodus zu wechseln, wird ein Thread, der die TryEnterUpgradeableReadLock Methodenblöcke aufruft, bis diese Threads entweder timeout oder in den Schreibmodus verschoben und dann beendet wurden, oder bis das eigene Timeoutintervall des aufrufenden Threads abläuft.

Note

Wenn eine Sperre Rekursion zulässt, kann ein Thread, der die Sperre im upgradefähigen Modus eingegeben hat, rekursiv in den Upgrademodus wechseln, auch wenn andere Threads darauf warten, in den Schreibmodus zu wechseln.

Gilt für:

TryEnterUpgradeableReadLock(TimeSpan)

Versucht, die Sperre im upgradefähigen Modus mit einem optionalen Timeout einzugeben.

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

Parameter

timeout
TimeSpan

Das zu wartende Intervall oder -1 Millisekunden, um auf unbestimmte Zeit zu warten.

Gibt zurück

true wenn der aufrufende Thread in den upgradefähigen Modus wechselt, andernfalls false.

Ausnahmen

Die RecursionPolicy Eigenschaft ist NoRecursion und der aktuelle Thread hat bereits die Sperre eingegeben.

-oder-

Der aktuelle Thread trat zunächst in den Lesemodus ein, und daher würde der Versuch, in den Upgrademodus zu wechseln, die Möglichkeit eines Deadlocks schaffen.

-oder-

Die Rekursionszahl würde die Kapazität des Zählers überschreiten. Der Grenzwert ist so groß, dass Anwendungen niemals darauf stoßen sollten.

Der Wert von timeout ist negativ, ist aber nicht gleich -1 Millisekunden, was der einzige negative Wert ist, der zulässig ist.

-oder-

Der Wert von timeout " Int32.MaxValue Millisekunden" ist größer.

Das ReaderWriterLockSlim Objekt wurde verworfen.

Hinweise

Wenn timeout 0 (null) ist, überprüft diese Methode den Sperrzustand und gibt false sofort zurück, wenn der gewünschte Zustand nicht verfügbar ist.

Verwenden Sie den upgradefähigen Modus, wenn ein Thread in der Regel auf die ReaderWriterLockSlim im Lesemodus geschützte Ressource zugreift, aber möglicherweise in den Schreibmodus wechselt, wenn bestimmte Bedingungen erfüllt sind. Ein Thread im upgradefähigen Modus kann auf den Schreibmodus oder downgrade in den Lesemodus upgraden.

Es kann immer nur ein Thread eine Sperre im upgradefähigen Modus eingeben. Wenn sich ein Thread im upgradefähigen Modus befindet und es keine Threads gibt, die auf den Schreibmodus warten, kann eine beliebige Anzahl anderer Threads in den Lesemodus wechseln, auch wenn Threads vorhanden sind, die auf den Upgrademodus warten.

Wenn mindestens ein Threads darauf wartet, in den Schreibmodus zu wechseln, wird ein Thread, der die TryEnterUpgradeableReadLock Methodenblöcke aufruft, bis diese Threads entweder timeout oder in den Schreibmodus verschoben und dann beendet wurden, oder bis das eigene Timeoutintervall des aufrufenden Threads abläuft.

Note

Wenn eine Sperre Rekursion zulässt, kann ein Thread, der die Sperre im upgradefähigen Modus eingegeben hat, rekursiv in den Upgrademodus wechseln, auch wenn andere Threads darauf warten, in den Schreibmodus zu wechseln.

Gilt für: