Jazyk

AsyncReaderWriterLock Třída

Definice

Neblokující zámek, který umožňuje souběžný přístup, výhradní přístup nebo souběžný přístup s možností upgradu na výhradní přístup.

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
Dědičnost
AsyncReaderWriterLock
Odvozené
Implementuje

Poznámky

Musíme místo vrácení úkolu{LockReleaser} použít vlastní awaitable, protože musíme nastavit data CallContext v kontextu osoby, která zámek přijímá, což vyžaduje, abychom na začátku pokračování spustili kód (bez ohledu na to, jestli získáme nebo ne).

Konstruktory

Name Description
AsyncReaderWriterLock()

Inicializuje novou instanci AsyncReaderWriterLock třídy.

AsyncReaderWriterLock(Boolean)

Inicializuje novou instanci AsyncReaderWriterLock třídy.

AsyncReaderWriterLock(JoinableTaskContext, Boolean)

Inicializuje novou instanci AsyncReaderWriterLock třídy.

Vlastnosti

Name Description
AmbientLock

Získá zámek uchovávaný kontextem provádění volajícího.

CanCurrentThreadHoldActiveLock

Získá hodnotu určující, zda aktuální vlákno je povoleno uchovávat aktivní zámek.

CaptureDiagnostics

Získá nebo nastaví hodnotu označující, zda by měly být vynaloženy další prostředky ke shromažďování informací, které by byly užitečné při diagnostice zablokování atd.

Completion

Získá úkol, jehož dokončení signály, že tento zámek již nebude vydávat zámky.

DeadlockCheckTimeout

Získá časové zpoždění ke kontrole, zda čekající zapisovač uzamčení a čtečky zámky tvoří vzájemné zablokování.

IsAnyLockHeld

Získá hodnotu určující, zda jakýkoli druh zámku je držen volající a lze jej okamžitě použít vzhledem k kontextu volajícího.

IsAnyPassiveLockHeld

Získá hodnotu určující, zda jakýkoli druh zámku je držen volající bez ohledu na kompatibilitu zámku kontextu volajícího.

IsPassiveReadLockHeld

Získá hodnotu určující, zda je zámek čtení uložen volajícím bez ohledu na kompatibilitu zámku kontextu volajícího.

IsPassiveUpgradeableReadLockHeld

Získá hodnotu určující, zda je upgradeable read lock držení volající bez ohledu na kompatibilitu zámku kontextu volajícího.

IsPassiveWriteLockHeld

Získá hodnotu určující, zda je zámek zápisu držen volajícím bez ohledu na kompatibilitu zámku kontextu volajícího.

IsReadLockHeld

Získá hodnotu určující, zda volající drží zámek čtení.

IsUnsupportedSynchronizationContext

Získá hodnotu určující, zda aktuální SynchronizationContext je jeden, který není podporován tímto zámkem.

IsUpgradeableReadLockHeld

Získá hodnotu označující, zda volající obsahuje upgradovatelný zámek čtení.

IsWriteLockHeld

Získá hodnotu určující, zda volající drží zámek zápisu.

NoMessagePumpSynchronizationContext

SynchronizationContext Získá, který, při použití, potlačuje jakékoli čerpadlo zpráv, které může běžet během synchronních bloků volajícího vlákna.

SyncObject

Získá objekt použitý k synchronizaci přístupu k polím této instance.

Metody

Name Description
Complete()

Způsobí odmítnutí nových žádostí o uzamčení nejvyšší úrovně a Completion úkol přechod na dokončený stav po vydání všech vydaných zámků.

Dispose()

Neblokující zámek, který umožňuje souběžný přístup, výhradní přístup nebo souběžný přístup s možností upgradu na výhradní přístup.

Dispose(Boolean)

Odstraní spravované a nespravované prostředky uchovávané touto instancí.

GetAggregateLockFlags()

Vrátí agregaci příznaků zámku pro všechny vnořené zámky.

GetHangReport()

Přispívá k datům pro sestavu zablokování.

GetTaskSchedulerForReadLockRequest()

Získejte plánovač úloh, aby po získání zámku spustil pokračování. AsyncReaderWriterLock používá speciální SynchronizationContext pro zpracování exkluzivních zámků a bude ignorovat zadaný plánovač úloh, takže se používá pouze ve scénáři zámku pro čtení. Tato metoda se volá v kontextu spuštění, aby počkala zámek čtení, takže může vyzvednout TaskScheduler na základě aktuálního kontextu spuštění. Poznámka: Plánovač úloh se používá pouze při pozdějším vydání zámku. Pokud se zámek vydá okamžitě, když CanCurrentThreadHoldActiveLock vrátí hodnotu true, bude ignorován.

HideLocks()

Zabrání použití nebo viditelnosti zámků volajícího, dokud nebude vrácená hodnota uvolněna.

LockStackContains(AsyncReaderWriterLock+LockFlags, AsyncReaderWriterLock+LockHandle)

Zkontroluje, jestli agregované příznaky ze všech zámků v zásobníku zámků splňují zadané příznaky.

OnBeforeExclusiveLockReleasedAsync()

Aktivuje se, když bude vydán poslední zámek zápisu.

OnBeforeLockReleasedAsync(Boolean, AsyncReaderWriterLock+LockHandle)

Aktivuje se, když se uvolní nějaký zámek.

OnBeforeWriteLockReleased(Func<Task>)

Zaregistruje zpětné volání, které se má vyvolat, když se zámek zápisu uchovávaný volajícím chystá nakonec uvolnit (vnější zámek zápisu).

OnCriticalFailure(Exception)

Vyvoláno, když zámek zjistí vnitřní chybu nebo neplatný způsob použití, který značí závažnou chybu, která by měla být okamžitě hlášena aplikaci nebo snížit proces, aby se zabránilo zablokování nebo poškození dat.

OnCriticalFailure(String)

Vyvoláno, když zámek zjistí vnitřní chybu nebo neplatný způsob použití, který značí závažnou chybu, která by měla být okamžitě hlášena aplikaci nebo snížit proces, aby se zabránilo zablokování nebo poškození dat.

OnExclusiveLockReleasedAsync()

Vyvoláno po uvolnění exkluzivního zámku, ale předtím, než někdo má šanci vstoupit do zámku.

OnUpgradeableReadLockReleased()

Vyvoláno při uvolnění upgradovatelného zámku čtení na nejvyšší úrovni a ponechání zbývajícího zámku (zápisu).

ReadLockAsync(CancellationToken)

Získá zámek pro čtení, asynchronně čeká na zámek, pokud není okamžitě dostupný.

UpgradeableReadLockAsync(AsyncReaderWriterLock+LockFlags, CancellationToken)

Získá upgradovatelný zámek pro čtení, asynchronně čeká na zámek, pokud není okamžitě dostupný.

UpgradeableReadLockAsync(CancellationToken)

Získá upgradovatelný zámek pro čtení, asynchronně čeká na zámek, pokud není okamžitě dostupný.

WriteLockAsync(AsyncReaderWriterLock+LockFlags, CancellationToken)

Získá zámek zápisu, asynchronně čeká na zámek, pokud není okamžitě dostupný.

WriteLockAsync(CancellationToken)

Získá zámek zápisu, asynchronně čeká na zámek, pokud není okamžitě dostupný.

Explicitní implementace rozhraní

Name Description
IHangReportContributor.GetHangReport()

Přispívá k datům pro sestavu zablokování.

Platí pro

Bezpečný přístup z více vláken

Tento typ je bezpečný pro všechny členy.