RouteCollection.GetReadLock 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.
Fournit un objet pour gérer la sécurité des threads quand vous récupérez un objet 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 à partir de 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 afin de garantir la GetReadLock sécurité des threads. En obtenant un verrou de lecture sur la collection de routes, vous vous assurez 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 de la collection de routes 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 lors de la lecture de la RouteCollection collection. Par exemple, supposons que vous parcouriez en boucle les objets de la collection pour les RouteCollection lire, sans appeler GetReadLock. Pendant ce temps, 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 appelez GetReadLock en interne. Par conséquent, vous n’avez pas besoin d’appeler GetReadLock explicitement lorsque vous appelez 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’aucun autre thread n’est susceptible de mettre à jour la collection pendant sa lecture, vous n’avez pas besoin d’appeler GetReadLock.