ReaderWriterLockSlim.TryEnterUpgradeableReadLock Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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.