AsyncReaderWriterLock Sınıf
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
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.