AsyncReaderWriterLock Klasse
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.
Eine nicht blockierende Sperre, die gleichzeitigen Zugriff, exklusiven Zugriff oder gleichzeitig mit Erweiterbarkeit auf exklusiven Zugriff ermöglicht.
public ref class AsyncReaderWriterLock : IDisposable, Microsoft::VisualStudio::Threading::IHangReportContributor
public class AsyncReaderWriterLock : IDisposable, Microsoft.VisualStudio.Threading.IHangReportContributor
type AsyncReaderWriterLock = class
interface IHangReportContributor
interface IDisposable
Public Class AsyncReaderWriterLock
Implements IDisposable, IHangReportContributor
- Vererbung
-
AsyncReaderWriterLock
- Abgeleitet
- Implementiert
Hinweise
Wir müssen eine benutzerdefinierte "awanutzbare" verwenden, anstatt einfach die Aufgabe "{lockreleaser}" zurückzugeben, da wir CallContext-Daten im Kontext der Person festlegen müssen, die die Sperre empfängt. Dies erfordert, dass wir den Code am Anfang der Fortsetzung ausführen (unabhängig davon, ob wir den Wert erhalten).
Konstruktoren
| AsyncReaderWriterLock() |
Initialisiert eine neue Instanz der AsyncReaderWriterLock-Klasse. |
| AsyncReaderWriterLock(Boolean) |
Initialisiert eine neue Instanz der AsyncReaderWriterLock-Klasse. |
Eigenschaften
| AmbientLock |
Ruft die Sperre ab, die durch den Ausführungskontext des Aufrufers angehalten wird. |
| CanCurrentThreadHoldActiveLock |
Ruft einen Wert ab, der angibt, ob der aktuelle Thread eine aktive Sperre enthalten darf. |
| CaptureDiagnostics |
Ruft einen Wert ab, der angibt, ob zusätzliche Ressourcen zum Sammeln von Informationen aufgewendet werden sollen, die bei der Diagnose von Deadlocks hilfreich sind, oder legt diesen fest. |
| Completion |
Ruft eine Aufgabe ab, deren Abschluss signalisiert, dass diese Sperre keine Sperren mehr ausgibt. |
| IsAnyLockHeld |
Ruft einen Wert ab, der angibt, ob eine Art von Sperre vom Aufrufer gehalten wird und sofort mit dem Kontext des Aufrufers verwendet werden kann. |
| IsAnyPassiveLockHeld |
Ruft einen Wert ab, der angibt, ob eine Art von Sperre vom Aufrufer ohne Berücksichtigung der Sperrenkompatibilität des Kontext Aufrufers gehalten wird. |
| IsPassiveReadLockHeld |
Ruft einen Wert ab, der angibt, ob eine Lesesperre vom Aufrufer ohne Berücksichtigung der Sperrenkompatibilität des Kontext Aufrufers gehalten wird. |
| IsPassiveUpgradeableReadLockHeld |
Ruft einen Wert ab, der angibt, ob eine aktualisierbare Lesesperre vom Aufrufer ohne Berücksichtigung der Sperrenkompatibilität des Kontext Aufrufers gehalten wird. |
| IsPassiveWriteLockHeld |
Ruft einen Wert ab, der angibt, ob eine Schreibsperre vom Aufrufer ohne Berücksichtigung der Sperrenkompatibilität des Kontext Aufrufers gehalten wird. |
| IsReadLockHeld |
Ruft einen Wert ab, der angibt, ob der Aufrufer eine Lesesperre besitzt. |
| IsUnsupportedSynchronizationContext |
Ruft einen Wert ab, der angibt, ob der aktuelle SynchronizationContext ein Wert ist, der von dieser Sperre nicht unterstützt wird. |
| IsUpgradeableReadLockHeld |
Ruft einen Wert ab, der angibt, ob der Aufrufer eine aktualisierbare Lesesperre enthält. |
| IsWriteLockHeld |
Ruft einen Wert ab, der angibt, ob der Aufrufer eine Schreibsperre enthält. |
| NoMessagePumpSynchronizationContext |
Ruft ein ab, SynchronizationContext das bei angewendetem alle nachrichtenpump unterdrückt, die während synchroner Blöcke des aufrufenden Threads ausgeführt werden können. |
| SyncObject |
Ruft das-Objekt ab, das zum Synchronisieren des Zugriffs auf die Felder dieser Instanz verwendet wird. |
Methoden
| Complete() |
Verursacht, dass neue Sperrenanforderungen der obersten Ebene, die abgelehnt werden sollen und die Completion-Aufgabe in einen abgeschlossenen Zustand übergehen, nachdem alle ausgegebenen Sperren freigegeben wurden. |
| Dispose() | Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. |
| Dispose(Boolean) |
Gibt verwaltete und nicht verwaltete Ressourcen frei, die von dieser Instanz aufbewahrt werden. |
| GetAggregateLockFlags() |
Gibt das Aggregat der Sperrflags für alle geschachtelten Sperren zurück. |
| GetHangReport() |
Trägt Daten für einen Absturzbericht bei. |
| GetTaskSchedulerForReadLockRequest() |
Hiermit wird der Aufgabenplaner zum Ausführen der Fortsetzung abgerufen, wenn die Sperre abgerufen wird. Asynkreaderwriterlock verwendet ein spezielles, SynchronizationContext um execusive Sperren zu behandeln, und ignoriert den bereitgestellten Taskplaner, sodass dies nur in einem Szenario mit Lesesperre verwendet wird. Diese Methode wird innerhalb des Ausführungs Kontexts aufgerufen, um die Lesesperre zu warten, sodass Sie TaskScheduler basierend auf dem aktuellen Ausführungs Kontext abgerufen werden kann. Hinweis: der Aufgabenplaner wird nur verwendet, wenn die Sperre zu einem späteren Zeitpunkt ausgegeben wird. Wenn die Sperre sofort ausgegeben wird CanCurrentThreadHoldActiveLock , wenn true zurückgibt, wird Sie ignoriert. |
| HideLocks() |
Verhindert die Verwendung oder Sichtbarkeit der Sperre(n) des Aufrufers, bis der zurückgegebene Wert gelöscht ist. |
| LockStackContains(AsyncReaderWriterLock+LockFlags, AsyncReaderWriterLock+LockHandle) |
Überprüft, ob die aggregierten Flags aller Sperren im Sperr Stapel den angegebenen Flags entsprechen. |
| OnBeforeExclusiveLockReleasedAsync() |
Wird ausgelöst, wenn die letzte Schreibsperre freigegeben wird. |
| OnBeforeLockReleasedAsync(Boolean, AsyncReaderWriterLock+LockHandle) |
Wird ausgelöst, wenn eine Sperre aufgehoben wird. |
| OnBeforeWriteLockReleased(Func<Task>) |
Registriert einen Rückruf, der aufgerufen werden soll, wenn die vom Aufrufer gehaltene Schreibsperre letztendlich freigegeben wird (äußerste Schreibsperre). |
| OnCriticalFailure(Exception) |
Wird aufgerufen, wenn die Sperre einen internen Fehler oder ein ungültiges Verwendungs Muster erkennt, das auf einen schwerwiegenden Fehler hinweist, der sofort an die Anwendung gemeldet werden soll, und/oder den Prozess zum Vermeiden von abstürzen oder Daten Beschädigungen heruntergefahren. |
| OnCriticalFailure(String) |
Wird aufgerufen, wenn die Sperre einen internen Fehler oder ein ungültiges Verwendungs Muster erkennt, das auf einen schwerwiegenden Fehler hinweist, der sofort an die Anwendung gemeldet werden soll, und/oder den Prozess zum Vermeiden von abstürzen oder Daten Beschädigungen heruntergefahren. |
| OnExclusiveLockReleasedAsync() |
Wird aufgerufen, nachdem eine exklusive Sperre freigegeben wurde, aber bevor jemand die Möglichkeit hat, die Sperre einzugeben. |
| OnUpgradeableReadLockReleased() |
Wird aufgerufen, wenn eine aktualisierbare Lesesperre auf oberster Ebene freigegeben wird, ohne die verbleibende Sperre (Schreibsperre) zu belassen. |
| ReadLockAsync(CancellationToken) |
Ruft eine Lesesperre ab wartet asynchron auf die Sperre, wenn sie nicht sofort verfügbar ist. |
| UpgradeableReadLockAsync(AsyncReaderWriterLock+LockFlags, CancellationToken) |
Ruft eine Lesesperre ab wartet asynchron auf die Sperre, wenn sie nicht sofort verfügbar ist. |
| UpgradeableReadLockAsync(CancellationToken) |
Erhält eine aktualisierbare Lesesperre, die asynchron auf die Sperre wartet, wenn Sie nicht sofort verfügbar ist. |
| WriteLockAsync(AsyncReaderWriterLock+LockFlags, CancellationToken) |
Ruft eine Schreibsperre ab wartet asynchron auf die Sperre, wenn sie nicht sofort verfügbar ist. |
| WriteLockAsync(CancellationToken) |
Ruft eine Schreibsperre ab wartet asynchron auf die Sperre, wenn sie nicht sofort verfügbar ist. |
Explizite Schnittstellenimplementierungen
| IHangReportContributor.GetHangReport() |
Trägt Daten für einen Absturzbericht bei. |
Gilt für
Threadsicherheit
Dieser Typ ist für alle Member Thread sicher.