語言

AsyncReaderWriterResourceLock<TMoniker,TResource> 類別

定義

一種非阻塞性鎖,允許同時存取、專屬存取,或同時可升級至專屬存取,為必須準備的資源做特殊允許,以應付並行或專屬存取。

generic <typename TMoniker, typename TResource>
 where TResource : classpublic ref class AsyncReaderWriterResourceLock abstract : Microsoft::VisualStudio::Threading::AsyncReaderWriterLock
public abstract class AsyncReaderWriterResourceLock<TMoniker,TResource> : Microsoft.VisualStudio.Threading.AsyncReaderWriterLock where TResource : class
type AsyncReaderWriterResourceLock<'Moniker, 'Resource (requires 'Resource : null)> = class
    inherit AsyncReaderWriterLock
Public MustInherit Class AsyncReaderWriterResourceLock(Of TMoniker, TResource)
Inherits AsyncReaderWriterLock

類型參數

TMoniker

用來識別資源的名稱類型。

TResource

此鎖可存取的資源類型。

繼承
AsyncReaderWriterResourceLock<TMoniker,TResource>

建構函式

名稱 Description
AsyncReaderWriterResourceLock<TMoniker,TResource>()

初始化 AsyncReaderWriterResourceLock<TMoniker,TResource> 類別的新執行個體。

AsyncReaderWriterResourceLock<TMoniker,TResource>(Boolean)

初始化 AsyncReaderWriterResourceLock<TMoniker,TResource> 類別的新執行個體。

AsyncReaderWriterResourceLock<TMoniker,TResource>(JoinableTaskContext, Boolean)

初始化 AsyncReaderWriterResourceLock<TMoniker,TResource> 類別的新執行個體。

屬性

名稱 Description
AmbientLock

取得呼叫者執行上下文所持有的鎖。

(繼承來源 AsyncReaderWriterLock)
CanCurrentThreadHoldActiveLock

會取得一個值,表示目前執行緒是否被允許持有一個主動鎖。

(繼承來源 AsyncReaderWriterLock)
CaptureDiagnostics

取得或設定一個值,指示是否應該投入額外資源收集有助於診斷僵局等有用的資訊。

(繼承來源 AsyncReaderWriterLock)
Completion

會收到一個任務,完成後表示這個鎖不會再發鎖。

(繼承來源 AsyncReaderWriterLock)
DeadlockCheckTimeout

會有一個時間延遲來檢查待處理的寫入鎖定和讀取鎖定是否會形成死結。

(繼承來源 AsyncReaderWriterLock)
IsAnyLockHeld

會取得一個值,表示呼叫者是否持有任何類型的鎖,並可根據呼叫者的上下文立即使用。

(繼承來源 AsyncReaderWriterLock)
IsAnyPassiveLockHeld

獲得一個值,指示呼叫者是否持有任何類型的鎖,而不考慮呼叫者上下文的鎖相容性。

(繼承來源 AsyncReaderWriterLock)
IsPassiveReadLockHeld

會獲得一個值,表示呼叫者是否持有讀取鎖,而不考慮呼叫者上下文的鎖相容性。

(繼承來源 AsyncReaderWriterLock)
IsPassiveUpgradeableReadLockHeld

會獲得一個值,表示呼叫者是否持有可升級的讀取鎖,而不考慮呼叫者上下文的鎖相容性。

(繼承來源 AsyncReaderWriterLock)
IsPassiveWriteLockHeld

會取得一個值,表示呼叫者是否持有寫入鎖,而不考慮呼叫者上下文的鎖相容性。

(繼承來源 AsyncReaderWriterLock)
IsReadLockHeld

會取得一個值,表示呼叫者是否持有讀取鎖。

(繼承來源 AsyncReaderWriterLock)
IsUnsupportedSynchronizationContext

會取得一個值,表示目前的同步上下文是否不受此鎖支援。

(繼承來源 AsyncReaderWriterLock)
IsUpgradeableReadLockHeld

會獲得一個值,表示呼叫者是否持有可升級的讀取鎖。

(繼承來源 AsyncReaderWriterLock)
IsWriteLockHeld

會得到一個值,表示呼叫者是否持有寫入鎖。

(繼承來源 AsyncReaderWriterLock)
NoMessagePumpSynchronizationContext

會得到一個 SynchronizationContext ,當應用時,會抑制在呼叫執行緒同步區塊中可能執行的任何訊息泵。

(繼承來源 AsyncReaderWriterLock)
SyncObject

取得用於同步存取此實例欄位的物件。

(繼承來源 AsyncReaderWriterLock)

方法

名稱 Description
Complete()

會讓新的頂層鎖請求被拒絕,任務 Completion 在釋放所有已發出鎖後,轉換為完成狀態。

(繼承來源 AsyncReaderWriterLock)
Dispose()

一種非阻塞性鎖,允許同時存取、專屬存取,或同時可升級至專屬存取,為必須準備的資源做特殊允許,以應付並行或專屬存取。

(繼承來源 AsyncReaderWriterLock)
Dispose(Boolean)

處理此實例所持有的可管理與非管理資源。

(繼承來源 AsyncReaderWriterLock)
GetAggregateLockFlags()

回傳所有巢狀鎖的鎖旗總值。

GetHangReport()

為懸掛報告提供數據。

(繼承來源 AsyncReaderWriterLock)
GetResourceAsync(TMoniker, CancellationToken)

取得指定名稱的資源。

GetTaskSchedulerForReadLockRequest()

讓任務排程器在鎖定後執行續行。 AsyncReaderWriterLock 使用特殊 SynchronizationContext 碼來處理獨佔鎖,並會忽略任務排程器,因此僅在讀取鎖定情境下使用。 此方法會在執行上下文中被呼叫以等待讀取鎖定,以便根據當前執行上下文讀取 TaskScheduler 。 注意:任務排程器僅在鎖定後續生效時使用。 如果當 CanCurrentThreadHoldActiveLock 回傳為真時立即發出鎖,則會被忽略。

(繼承來源 AsyncReaderWriterLock)
GetTaskSchedulerToPrepareResourcesForConcurrentAccess(TResource)

會有一個任務排程器來準備資源以供並行存取。

HideLocks()

在回傳值被處理前,阻止呼叫者的鎖被使用或顯示。

(繼承來源 AsyncReaderWriterLock)
LockStackContains(AsyncReaderWriterLock+LockFlags, AsyncReaderWriterLock+LockHandle)

檢查鎖堆疊中所有鎖的聚合旗標是否符合指定旗標。

(繼承來源 AsyncReaderWriterLock)
OnBeforeExclusiveLockReleasedAsync()

當最後一個寫入鎖定快要解除時觸發。

(繼承來源 AsyncReaderWriterLock)
OnBeforeLockReleasedAsync(Boolean, AsyncReaderWriterLock+LockHandle)

任何鎖被解鎖時都會被觸發。

(繼承來源 AsyncReaderWriterLock)
OnBeforeWriteLockReleased(Func<Task>)

註冊一個回調,當呼叫者持有的寫入鎖即將最終解除時(最外層寫入鎖定)。

(繼承來源 AsyncReaderWriterLock)
OnCriticalFailure(Exception)

當鎖定偵測到內部錯誤或非法使用模式,顯示嚴重缺陷,應立即回報應用程式及/或關閉程序以避免當機或資料損毀時,會被啟動。

(繼承來源 AsyncReaderWriterLock)
OnCriticalFailure(String)

當鎖定偵測到內部錯誤或非法使用模式,顯示嚴重缺陷,應立即回報應用程式及/或關閉程序以避免當機或資料損毀時,會被啟動。

(繼承來源 AsyncReaderWriterLock)
OnExclusiveLockReleasedAsync()

在專屬鎖解除後,但任何人還沒進入鎖之前就啟動。

OnUpgradeableReadLockReleased()

當頂層可升級讀取鎖被釋放,且沒有剩餘(寫入)鎖時會被呼叫。

PrepareResourceForConcurrentAccessAsync(TResource, CancellationToken)

準備資源以供並行存取。

PrepareResourceForExclusiveAccessAsync(TResource, AsyncReaderWriterResourceLock<TMoniker,TResource>.LockFlags, CancellationToken)

準備一個資源以供單一線程存取。

ReadLockAsync(CancellationToken)

取得讀取鎖,若鎖定尚未立即啟用,則非同步等待。

SetAllResourcesToUnknownState()

將所有要考慮的資源設定為未知狀態。

SetResourceAsAccessed(Func<TResource,Object,Boolean>, Object)

若任何已載入的資源滿足某謂詞,則標記為已鎖定。

SetResourceAsAccessed(TResource)

標記資源已被鎖定。

UpgradeableReadLockAsync(AsyncReaderWriterLock+LockFlags, CancellationToken)

取得可升級的讀取鎖,若鎖定尚未立即可用,則非同步等待。

(繼承來源 AsyncReaderWriterLock)
UpgradeableReadLockAsync(AsyncReaderWriterResourceLock<TMoniker,TResource>.LockFlags, CancellationToken)

取得讀取鎖,若鎖定尚未立即啟用,則非同步等待。

UpgradeableReadLockAsync(CancellationToken)

取得可升級的讀取鎖,若鎖定尚未立即可用,則非同步等待。

WriteLockAsync(AsyncReaderWriterLock+LockFlags, CancellationToken)

取得寫入鎖,若鎖定尚未立即啟用,則非同步等待。

(繼承來源 AsyncReaderWriterLock)
WriteLockAsync(AsyncReaderWriterResourceLock<TMoniker,TResource>.LockFlags, CancellationToken)

取得寫入鎖,若鎖定尚未立即啟用,則非同步等待。

WriteLockAsync(CancellationToken)

取得寫入鎖,若鎖定尚未立即啟用,則非同步等待。

明確介面實作

名稱 Description
IHangReportContributor.GetHangReport()

為懸掛報告提供數據。

(繼承來源 AsyncReaderWriterLock)

適用於

執行緒安全性

此類型對所有成員皆為執行緒安全。