ReaderWriterLockSlim.TryEnterUpgradeableReadLock Méthode

Définition

Tente d’entrer le verrou en mode mise à niveau, avec un délai d’attente facultatif.

Surcharges

Nom Description
TryEnterUpgradeableReadLock(Int32)

Tente d’entrer le verrou en mode mise à niveau, avec un délai d’attente facultatif.

TryEnterUpgradeableReadLock(TimeSpan)

Tente d’entrer le verrou en mode mise à niveau, avec un délai d’attente facultatif.

TryEnterUpgradeableReadLock(Int32)

Tente d’entrer le verrou en mode mise à niveau, avec un délai d’attente facultatif.

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

Paramètres

millisecondsTimeout
Int32

Nombre de millisecondes à attendre, ou -1 (Infinite) d’attendre indéfiniment.

Retours

truesi le thread appelant est entré en mode mise à niveau, sinon. false

Exceptions

La RecursionPolicy propriété est NoRecursion et le thread actuel a déjà entré le verrou.

-ou-

Le thread actuel a initialement entré le verrou en mode lecture, et par conséquent, essayer d’entrer en mode pouvant être mis à niveau créerait la possibilité d’un interblocage.

-ou-

Le nombre de récursivité dépasse la capacité du compteur. La limite est si grande que les applications ne doivent jamais les rencontrer.

La valeur est millisecondsTimeout négative, mais elle n’est pas égale à Infinite (-1), qui est la seule valeur négative autorisée.

L’objet ReaderWriterLockSlim a été supprimé.

Remarques

Si millisecondsTimeout la valeur est 0 (zéro), cette méthode vérifie l’état de verrouillage et retourne false immédiatement si l’état souhaité n’est pas disponible.

Utilisez le mode pouvant être mis à niveau lorsqu’un thread accède généralement à la ressource protégée par le ReaderWriterLockSlim mode lecture, mais qu’il peut être nécessaire d’entrer en mode écriture si certaines conditions sont remplies. Un thread en mode mise à niveau peut être mis à niveau en mode écriture ou rétrograder en mode lecture.

Un seul thread peut entrer un verrou en mode pouvant être mis à niveau à tout moment. Si un thread est en mode pouvant être mis à niveau et qu’il n’y a pas de threads en attente d’entrée en mode d’écriture, un nombre quelconque de threads peut entrer en mode lecture, même s’il existe des threads qui attendent d’entrer en mode pouvant être mis à niveau.

Si un ou plusieurs threads attendent d’entrer en mode d’écriture, un thread qui appelle les TryEnterUpgradeableReadLock blocs de méthode jusqu’à ce que ces threads aient expiré ou entré le mode d’écriture, puis quitté, ou jusqu’à ce que l’intervalle de délai d’expiration du thread appelant expire.

Note

Si un verrou autorise la récursivité, un thread qui a entré le verrou en mode pouvant être mis à niveau peut entrer en mode pouvant être mis à niveau de manière récursive, même si d’autres threads attendent d’entrer en mode écriture.

S’applique à

TryEnterUpgradeableReadLock(TimeSpan)

Tente d’entrer le verrou en mode mise à niveau, avec un délai d’attente facultatif.

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

Paramètres

timeout
TimeSpan

Intervalle à attendre, ou -1 millisecondes pour attendre indéfiniment.

Retours

truesi le thread appelant est entré en mode mise à niveau, sinon. false

Exceptions

La RecursionPolicy propriété est NoRecursion et le thread actuel a déjà entré le verrou.

-ou-

Le thread actuel a initialement entré le verrou en mode lecture, et par conséquent, essayer d’entrer en mode pouvant être mis à niveau créerait la possibilité d’un interblocage.

-ou-

Le nombre de récursivité dépasse la capacité du compteur. La limite est si grande que les applications ne doivent jamais les rencontrer.

La valeur est timeout négative, mais elle n’est pas égale à -1 millisecondes, qui est la seule valeur négative autorisée.

-ou-

La valeur est timeout supérieure à Int32.MaxValue millisecondes.

L’objet ReaderWriterLockSlim a été supprimé.

Remarques

Si timeout la valeur est 0 (zéro), cette méthode vérifie l’état de verrouillage et retourne false immédiatement si l’état souhaité n’est pas disponible.

Utilisez le mode pouvant être mis à niveau lorsqu’un thread accède généralement à la ressource protégée par le ReaderWriterLockSlim mode lecture, mais qu’il peut être nécessaire d’entrer en mode écriture si certaines conditions sont remplies. Un thread en mode mise à niveau peut être mis à niveau en mode écriture ou rétrograder en mode lecture.

Un seul thread peut entrer un verrou en mode pouvant être mis à niveau à tout moment. Si un thread est en mode pouvant être mis à niveau et qu’il n’y a pas de threads en attente d’entrée en mode d’écriture, un nombre quelconque de threads peut entrer en mode lecture, même s’il existe des threads qui attendent d’entrer en mode pouvant être mis à niveau.

Si un ou plusieurs threads attendent d’entrer en mode d’écriture, un thread qui appelle les TryEnterUpgradeableReadLock blocs de méthode jusqu’à ce que ces threads aient expiré ou entré le mode d’écriture, puis quitté, ou jusqu’à ce que l’intervalle de délai d’expiration du thread appelant expire.

Note

Si un verrou autorise la récursivité, un thread qui a entré le verrou en mode pouvant être mis à niveau peut entrer en mode pouvant être mis à niveau de manière récursive, même si d’autres threads attendent d’entrer en mode écriture.

S’applique à