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 gleichzeitige Upgrademöglichkeit auf exklusiven Zugriff zulässt.
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 einen benutzerdefinierten Wartewert verwenden, anstatt einfach Task{LockReleaser} zurückzugeben, da wir CallContext-Daten im Kontext der Person festlegen müssen, die die Sperre empfängt. Dies erfordert, dass wir code zu Beginn der Fortsetzung ausführen (unabhängig davon, ob wir die Sperre erhalten oder nicht).
Konstruktoren
AsyncReaderWriterLock() |
Initialisiert eine neue Instanz der AsyncReaderWriterLock-Klasse. |
AsyncReaderWriterLock(Boolean) |
Initialisiert eine neue Instanz der AsyncReaderWriterLock-Klasse. |
AsyncReaderWriterLock(JoinableTaskContext, 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 ausgegeben werden sollen, um Informationen zu sammeln, die bei der Diagnose von Deadlocks usw. nützlich wären, oder legt diesen fest. |
Completion |
Ruft eine Aufgabe ab, deren Abschluss signalisiert, dass diese Sperre keine Sperren mehr ausgibt. |
DeadlockCheckTimeout |
Ruft eine Zeitverzögerung ab, um zu überprüfen, ob ausstehende Writer- und Lesersperren ein Deadlock bilden. |
IsAnyLockHeld |
Ruft einen Wert ab, der angibt, ob eine art von Sperre vom Aufrufer gehalten wird und sofort im Kontext des Aufrufers verwendet werden kann. |
IsAnyPassiveLockHeld |
Ruft einen Wert ab, der angibt, ob eine Art von Sperre vom Aufrufer ohne Rücksicht auf die Sperrkompatibilität des Kontexts des Aufrufers gehalten wird. |
IsPassiveReadLockHeld |
Ruft einen Wert ab, der angibt, ob eine Lesesperre vom Aufrufer ohne Berücksichtigung der Sperrkompatibilität des Kontexts des Aufrufers gehalten wird. |
IsPassiveUpgradeableReadLockHeld |
Ruft einen Wert ab, der angibt, ob eine upgradebare Lesesperre vom Aufrufer ohne Berücksichtigung der Sperrkompatibilität des Kontexts des Aufrufers gehalten wird. |
IsPassiveWriteLockHeld |
Ruft einen Wert ab, der angibt, ob eine Schreibsperre vom Aufrufer ohne Berücksichtigung der Sperrkompatibilität des Kontexts des Aufrufers gehalten wird. |
IsReadLockHeld |
Ruft einen Wert ab, der angibt, ob der Aufrufer über eine Lesesperre verfügt. |
IsUnsupportedSynchronizationContext |
Ruft einen Wert ab, der angibt, ob es sich bei dem aktuellen SynchronizationContext um einen Wert handelt, der von dieser Sperre nicht unterstützt wird. |
IsUpgradeableReadLockHeld |
Ruft einen Wert ab, der angibt, ob der Aufrufer über eine upgradebare Lesesperre verfügt. |
IsWriteLockHeld |
Ruft einen Wert ab, der angibt, ob der Aufrufer über eine Schreibsperre verfügt. |
NoMessagePumpSynchronizationContext |
Ruft eine SynchronizationContext ab, die bei Anwendung jede Nachrichtenpumpe unterdrückt, die während synchroner Blöcke des aufrufenden Threads ausgeführt werden kann. |
SyncObject |
Ruft das -Objekt ab, das zum Synchronisieren des Zugriffs auf die Felder dieses instance 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() |
Eine nicht blockierende Sperre, die gleichzeitigen Zugriff, exklusiven Zugriff oder gleichzeitige Upgrademöglichkeit auf exklusiven Zugriff zulässt. |
Dispose(Boolean) |
Löscht verwaltete und nicht verwaltete Ressourcen, die von diesem instance. |
GetAggregateLockFlags() |
Gibt das Aggregat der Sperrflags für alle geschachtelten Sperren zurück. |
GetHangReport() |
Trägt Daten für einen Absturzbericht bei. |
GetTaskSchedulerForReadLockRequest() |
Rufen Sie den Taskplaner ab, um die Fortsetzung auszuführen, wenn die Sperre abgerufen wird. AsyncReaderWriterLock verwendet einen Speziellen SynchronizationContext , um exklusive Sperren zu behandeln, und ignoriert den bereitgestellten Taskplaner, sodass dies nur in einem Lesesperrszenario verwendet wird. Diese Methode wird innerhalb des Ausführungskontexts aufgerufen, um die Lesesperre zu warten, sodass sie basierend auf dem aktuellen Ausführungskontext verwendet TaskScheduler werden kann. Hinweis: Der Aufgabenplaner wird nur verwendet, wenn die Sperre später ausgestellt wird. Wenn die Sperre sofort ausgestellt wird, wenn CanCurrentThreadHoldActiveLock true zurückgegeben wird, 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 aus allen Sperren im Sperrstapel die angegebenen Flags erfüllen. |
OnBeforeExclusiveLockReleasedAsync() |
Wird ausgelöst, wenn die letzte Schreibsperre aufgehoben 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 endgültig aufgehoben wird (äußerste Schreibsperre). |
OnCriticalFailure(Exception) |
Wird aufgerufen, wenn die Sperre einen internen Fehler oder ein unzulässiges Verwendungsmuster erkennt, das auf einen schwerwiegenden Fehler hinweist, der sofort an die Anwendung gemeldet werden sollte und/oder den Prozess heruntergefahren werden sollte, um Hänger oder Datenbeschädigungen zu vermeiden. |
OnCriticalFailure(String) |
Wird aufgerufen, wenn die Sperre einen internen Fehler oder ein unzulässiges Verwendungsmuster erkennt, das auf einen schwerwiegenden Fehler hinweist, der sofort an die Anwendung gemeldet werden sollte und/oder den Prozess heruntergefahren werden sollte, um Hänger oder Datenbeschädigungen zu vermeiden. |
OnExclusiveLockReleasedAsync() |
Wird aufgerufen, nachdem eine exklusive Sperre aufgehoben wurde, aber bevor jemand die Möglichkeit hat, die Sperre zu betreten. |
OnUpgradeableReadLockReleased() |
Wird aufgerufen, wenn eine upgradebare Lesesperre der obersten Ebene aufgehoben wird, sodass keine verbleibende (Schreib-)Sperre verbleibt. |
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) |
Ruft eine upgradebare Lesesperre ab, 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 threadsicher für alle Member.