RouteCollection.GetReadLock Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Stellt ein Objekt zur Verwaltung der Threadsicherheit bereit, wenn Sie ein Objekt aus der Auflistung abrufen.
public:
IDisposable ^ GetReadLock();
public IDisposable GetReadLock ();
member this.GetReadLock : unit -> IDisposable
Public Function GetReadLock () As IDisposable
Gibt zurück
Ein Objekt, das die Threadsicherheit verwaltet.
Beispiele
Im folgenden Beispiel wird gezeigt, wie Sie die GetReadLock Methode verwenden, wenn Sie eine Route abrufen, während die Anwendung ausgeführt wird. Die Using
Anweisung stellt sicher, dass unabhängig davon, was zur Laufzeit geschieht, wenn Sie aus der Auflistung lesen (ob der Code normalerweise abgeschlossen wird oder eine Ausnahme ausgelöst wird), die Sperre am Ende des Using
Codeblocks sicher freigegeben wird.
Hinweise
Das RouteCollection Objekt ist für mehrere Prozesse in der Anwendung verfügbar. Wenn Sie daher eine Route abrufen müssen, wenn die Anwendung ausgeführt wird, verwenden Sie die GetReadLock Methode, um die Threadsicherheit zu gewährleisten. Indem Sie eine Lesesperre für die Routesammlung erhalten, stellen Sie sicher, dass die Auflistung nicht geändert wird, während Sie versuchen, sie abzurufen.
Die GetReadLock Methode beendet den Thread, bis die Sperre erworben werden kann. Wenn eine Schreibsperre vorhanden ist, wartet der Thread, bis das Update abgeschlossen ist und die Schreibsperre freigegeben wird. Die Lesesperre für die Routesammlung wird veröffentlicht, wenn das IDisposable von dieser Methode zurückgegebene Objekt entsorgt wird.
Wenn Sie keine Verwendung verwenden GetReadLock, erhalten Sie möglicherweise einen Fehler, während Sie die RouteCollection Sammlung lesen. Angenommen, Sie durchlaufen die Objekte in der RouteCollection Auflistung, um sie zu lesen, ohne zu aufrufen GetReadLock. Während Sie das tun, wird möglicherweise ein anderer Thread aus einer anderen Anforderung aufgerufen GetWriteLock und eine Route zur Auflistung hinzugefügt. Der erste Thread schlägt dann mit einem Fehler fehl.
Es gibt zwei Szenarien, in denen Sie nicht aufrufen GetReadLockmüssen:
Öffentliche Methoden der RouteCollection Klasse wie GetVirtualPath z. B. und GetRouteData Aufrufen GetReadLock intern. Daher müssen Sie nicht explizit aufrufen GetReadLock , wenn Sie eine öffentliche Methode der RouteCollection Klasse aufrufen, um Daten aus der Auflistung abzurufen.
Wenn die Anwendung gestartet wird und noch keine Anforderungen verarbeitet, z. B. im
Application_Start
Ereignishandler, wird nur ein Thread ausgeführt. Da es keine anderen Threads gibt, die die Auflistung möglicherweise aktualisieren, während Sie es lesen, müssen Sie nicht aufrufen GetReadLock.