Dil

AsyncReaderWriterLock Sınıf

Tanım

Eşzamanlı erişime, özel erişime veya özel erişime yükseltilebilirlikle eşzamanlı erişime izin veren engelleyici olmayan bir kilit.

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
Devralma
AsyncReaderWriterLock
Türetilmiş
Uygulamalar

Açıklamalar

CallContext verilerini kilidi alan kişi bağlamında ayarlamamız gerektiğinden yalnızca Task{LockReleaser} öğesini döndürmek yerine özel beklenebilir bir değer kullanmalıyız. Bu, devamlılık başlangıcında kod yürütmemizi gerektirir (verim versek de vermesek de).

Oluşturucular

Name Description
AsyncReaderWriterLock()

AsyncReaderWriterLock sınıfının yeni bir örneğini başlatır.

AsyncReaderWriterLock(Boolean)

AsyncReaderWriterLock sınıfının yeni bir örneğini başlatır.

AsyncReaderWriterLock(JoinableTaskContext, Boolean)

AsyncReaderWriterLock sınıfının yeni bir örneğini başlatır.

Özellikler

Name Description
AmbientLock

Çağıranın yürütme bağlamı tarafından tutulan kilidi alır.

CanCurrentThreadHoldActiveLock

Geçerli iş parçacığının etkin bir kilidi tutmasına izin verilip verilmeyeceğini belirten bir değer alır.

CaptureDiagnostics

Kilitlenmeleri tanılamak için yararlı olabilecek bilgileri toplamak için ek kaynakların harcanıp harcanmayacağını belirten bir değer alır veya ayarlar.

Completion

Bu kilidin artık kilit vermeyeceğini belirten tamamlama sinyalleri olan bir görev alır.

DeadlockCheckTimeout

Bekleyen yazıcı kilidinin ve okuyucu kilitlerinin kilitlenme oluşturup oluşturmadığını denetlemek için bir zaman gecikmesi alır.

IsAnyLockHeld

Arayan tarafından herhangi bir tür kilidin tutulup tutulmadığını ve çağıranın bağlamı göz önüne alındığında hemen kullanılabileceğini belirten bir değer alır.

IsAnyPassiveLockHeld

Çağıranın bağlamının kilit uyumluluğuna bakılmaksızın arayan tarafından herhangi bir tür kilit tutulup tutulmadığını belirten bir değer alır.

IsPassiveReadLockHeld

Çağıranın bağlamının kilit uyumluluğuna bakılmaksızın arayan tarafından bir okuma kilidinin tutulup tutulmadığını belirten bir değer alır.

IsPassiveUpgradeableReadLockHeld

Çağıranın bağlamının kilit uyumluluğuna bakılmaksızın çağıran tarafından yükseltilebilir bir okuma kilidinin tutulup tutulmadığını belirten bir değer alır.

IsPassiveWriteLockHeld

Çağıranın bağlamının kilit uyumluluğuna bakılmaksızın çağıran tarafından bir yazma kilidi tutulup tutulmadığını belirten bir değer alır.

IsReadLockHeld

Çağıranın okuma kilidi barındırıp tutmadığını belirten bir değer alır.

IsUnsupportedSynchronizationContext

Geçerli SynchronizationContext öğesinin bu kilit tarafından desteklenmeyen bir değer olup olmadığını belirten bir değer alır.

IsUpgradeableReadLockHeld

Çağıranın yükseltilebilir bir okuma kilidi barındırıp tutmadığını belirten bir değer alır.

IsWriteLockHeld

Çağıranın yazma kilidi barındırıp tutmadığını belirten bir değer alır.

NoMessagePumpSynchronizationContext

Uygulandığında, çağıran iş parçacığının zaman uyumlu blokları sırasında çalışabilecek tüm ileti pompalarını gizleyen bir SynchronizationContext alır.

SyncObject

Bu örneğin alanlarına erişimi eşitlemek için kullanılan nesneyi alır.

Yöntemler

Name Description
Complete()

Verilen kilitler yayımlandıktan sonra yeni üst düzey kilit isteklerinin Completion reddedilmesine ve görevin tamamlanmış duruma geçmesine neden olur.

Dispose()

Eşzamanlı erişime, özel erişime veya özel erişime yükseltilebilirlikle eşzamanlı erişime izin veren engelleyici olmayan bir kilit.

Dispose(Boolean)

Bu örnek tarafından tutulan yönetilen ve yönetilmeyen kaynakları atar.

GetAggregateLockFlags()

tüm iç içe kilitler için kilit bayraklarının toplamını döndürür.

GetHangReport()

Askıda kalma raporu için verilere katkıda bulunur.

GetTaskSchedulerForReadLockRequest()

Kilit alınırken devamlılığı yürütmek için görev zamanlayıcısını alın. AsyncReaderWriterLock özel kilitleri işlemek için özel SynchronizationContext bir kullanır ve sağlanan görev zamanlayıcıyı yoksayar, bu nedenle bu yalnızca okuma kilidi senaryosunda kullanılır. Bu yöntem, geçerli yürütme bağlamını temel alarak alabilmesi TaskScheduler için okuma kilidini beklemek için yürütme bağlamı içinde çağrılır. Not: Görev zamanlayıcı yalnızca kilit daha sonra verildiğinde kullanılır. True döndürdüğünde CanCurrentThreadHoldActiveLock kilit hemen verilirse, yoksayılır.

HideLocks()

Döndürülen değer atılana kadar çağıranın kilitlerinin kullanımını veya görünürlüğünü engeller.

LockStackContains(AsyncReaderWriterLock+LockFlags, AsyncReaderWriterLock+LockHandle)

Kilit yığınındaki tüm kilitlerden toplanan bayrakların belirtilen bayrakları karşılayıp karşılamadığını denetler.

OnBeforeExclusiveLockReleasedAsync()

Son yazma kilidi serbest bırakılmak üzereyken tetiklenir.

OnBeforeLockReleasedAsync(Boolean, AsyncReaderWriterLock+LockHandle)

Herhangi bir kilit serbest bırakıldığında tetiklenir.

OnBeforeWriteLockReleased(Func<Task>)

Çağıranın tuttuğu yazma kilidi sonunda serbest bırakılmak üzere olduğunda çağrılacak bir geri çağırma kaydeder (en dıştaki yazma kilidi).

OnCriticalFailure(Exception)

Kilit, uygulamaya hemen bildirilmesi gereken ciddi bir kusuru belirten bir iç hata veya geçersiz kullanım deseni algıladığında çağrılır ve/veya kilitlenmeleri veya veri bozulmalarını önlemek için işlemi devre dışı bırakır.

OnCriticalFailure(String)

Kilit, uygulamaya hemen bildirilmesi gereken ciddi bir kusuru belirten bir iç hata veya geçersiz kullanım deseni algıladığında çağrılır ve/veya kilitlenmeleri veya veri bozulmalarını önlemek için işlemi devre dışı bırakır.

OnExclusiveLockReleasedAsync()

Özel bir kilit serbest bırakıldıktan sonra ancak herhangi birinin kilidi girme şansı olmadan önce çağrılır.

OnUpgradeableReadLockReleased()

En üst düzey yükseltilebilir okuma kilidi serbest bırakıldığında çağrılır ve kalan (yazma) kilidi kalmaz.

ReadLockAsync(CancellationToken)

Hemen kullanılabilir değilse, zaman uyumsuz olarak kilit için bekleyen bir okuma kilidi alır.

UpgradeableReadLockAsync(AsyncReaderWriterLock+LockFlags, CancellationToken)

Hemen kullanılabilir değilse, zaman uyumsuz olarak kilit için bekleyen yükseltilebilir bir okuma kilidi alır.

UpgradeableReadLockAsync(CancellationToken)

Hemen kullanılabilir değilse, zaman uyumsuz olarak kilit için bekleyen yükseltilebilir bir okuma kilidi alır.

WriteLockAsync(AsyncReaderWriterLock+LockFlags, CancellationToken)

Hemen kullanılabilir değilse, zaman uyumsuz olarak kilit için bekleyen bir yazma kilidi alır.

WriteLockAsync(CancellationToken)

Hemen kullanılabilir değilse, zaman uyumsuz olarak kilit için bekleyen bir yazma kilidi alır.

Belirtik Arabirim Kullanımları

Name Description
IHangReportContributor.GetHangReport()

Askıda kalma raporu için verilere katkıda bulunur.

Şunlara uygulanır

İş Parçacığı Güvenliği

Bu tür, tüm üyeler için iş parçacığı güvenlidir.