RouteCollection.GetReadLock Méthode

Définition

Fournit un objet permettant de gérer la sécurité des threads lorsque vous récupérez un objet à partir de la collection.

public:
 IDisposable ^ GetReadLock();
public IDisposable GetReadLock();
member this.GetReadLock : unit -> IDisposable
Public Function GetReadLock () As IDisposable

Retours

Objet qui gère la sécurité des threads.

Exemples

L’exemple suivant montre comment utiliser la GetReadLock méthode lorsque vous récupérez un itinéraire pendant l’exécution de l’application. L’instruction Using garantit que peu importe ce qui se passe au moment de l’exécution lorsque vous lisez la collection (que le code se termine normalement ou qu’une exception soit levée), le verrou sera libéré en toute sécurité à la fin du bloc de Using code.

Remarques

L’objet RouteCollection est disponible pour plusieurs processus dans l’application. Par conséquent, si vous devez récupérer un itinéraire lorsque l’application est en cours d’exécution, utilisez la méthode pour garantir la GetReadLock sécurité des threads. En obtenant un verrou de lecture sur la collection d’itinéraires, assurez-vous que la collection ne sera pas modifiée pendant que vous essayez de la récupérer.

La GetReadLock méthode empêche le thread de continuer jusqu’à ce que le verrou puisse être acquis. Si un verrou d’écriture est en place, le thread attend que la mise à jour soit terminée et que le verrou d’écriture soit libéré. Le verrou de lecture sur la collection d’itinéraires est libéré lorsque l’objet IDisposable retourné par cette méthode est supprimé.

Si vous n’utilisez GetReadLockpas, vous risquez d’obtenir une erreur pendant la lecture de la RouteCollection collection. Par exemple, supposons que vous parcouriez les objets de la RouteCollection collection pour les lire, sans appeler GetReadLock. Pendant que vous effectuez cela, un autre thread d’une autre demande peut appeler GetWriteLock et ajouter un itinéraire à la collection. Le premier thread échoue ensuite avec une erreur.

Il existe deux scénarios dans lesquels vous n’avez pas besoin d’appeler GetReadLock:

  • Méthodes publiques de la RouteCollection classe, telles que GetVirtualPath et GetRouteData appelées GetReadLock en interne. Par conséquent, vous n’avez pas besoin d’appeler explicitement quand vous appelez GetReadLock une méthode publique de la RouteCollection classe pour récupérer des données de la collection.

  • Lorsque l’application démarre et ne traite pas encore les demandes, comme dans le Application_Start gestionnaire d’événements, un seul thread est en cours d’exécution. Étant donné qu’il n’y a pas d’autres threads susceptibles de mettre à jour la collection pendant que vous le lisez, vous n’avez pas besoin d’appeler GetReadLock.

S’applique à

Voir aussi