Поделиться через


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>

Конструкторы

AsyncReaderWriterResourceLock<TMoniker,TResource>()

Инициализирует новый экземпляр класса AsyncReaderWriterResourceLock<TMoniker,TResource>.

AsyncReaderWriterResourceLock<TMoniker,TResource>(Boolean)

Инициализирует новый экземпляр класса AsyncReaderWriterResourceLock<TMoniker,TResource>.

AsyncReaderWriterResourceLock<TMoniker,TResource>(JoinableTaskContext, Boolean)

Инициализирует новый экземпляр класса AsyncReaderWriterResourceLock<TMoniker,TResource>.

Свойства

AmbientLock

Получает блокировку, удерживаемую контекстом выполнения вызывающего объекта.

(Унаследовано от AsyncReaderWriterLock)
CanCurrentThreadHoldActiveLock

Возвращает значение, указывающее, разрешено ли текущему потоку удерживать активную блокировку.

(Унаследовано от AsyncReaderWriterLock)
CaptureDiagnostics

Возвращает или задает значение, указывающее, следует ли тратить дополнительные ресурсы на сбор сведений, которые были бы полезны при диагностике взаимоблокировок и т. д.

(Унаследовано от AsyncReaderWriterLock)
Completion

Получает задачу, завершение которой сигнализирует о том, что эта блокировка больше не будет выдавать других блокировок.

(Унаследовано от AsyncReaderWriterLock)
DeadlockCheckTimeout

Возвращает временную задержку для проверка того, образуется ли взаимоблокировка отложенных блокировок модуля записи и чтения.

(Унаследовано от AsyncReaderWriterLock)
IsAnyLockHeld

Возвращает значение, указывающее, удерживается ли вызывающим объектом какой-либо вид блокировки и может ли быть немедленно использована в контексте вызывающего объекта.

(Унаследовано от AsyncReaderWriterLock)
IsAnyPassiveLockHeld

Возвращает значение, указывающее, удерживается ли какой-либо тип блокировки вызывающим объектом без учета совместимости блокировки контекста вызывающего объекта.

(Унаследовано от AsyncReaderWriterLock)
IsPassiveReadLockHeld

Возвращает значение, указывающее, удерживается ли блокировка чтения вызывающим объектом без учета совместимости блокировки контекста вызывающего объекта.

(Унаследовано от AsyncReaderWriterLock)
IsPassiveUpgradeableReadLockHeld

Возвращает значение, указывающее, удерживается ли обновляемая блокировка чтения вызывающим объектом без учета совместимости блокировки контекста вызывающего объекта.

(Унаследовано от AsyncReaderWriterLock)
IsPassiveWriteLockHeld

Возвращает значение, указывающее, удерживается ли блокировка записи вызывающим объектом без учета совместимости блокировки контекста вызывающего объекта.

(Унаследовано от AsyncReaderWriterLock)
IsReadLockHeld

Возвращает значение, указывающее, удерживает ли вызывающий объект блокировку чтения.

(Унаследовано от AsyncReaderWriterLock)
IsUnsupportedSynchronizationContext

Возвращает значение, указывающее, является ли текущий элемент SynchronizationContext тем, который не поддерживается этой блокировкой.

(Унаследовано от AsyncReaderWriterLock)
IsUpgradeableReadLockHeld

Возвращает значение, указывающее, имеет ли вызывающий объект обновляемую блокировку чтения.

(Унаследовано от AsyncReaderWriterLock)
IsWriteLockHeld

Возвращает значение, указывающее, удерживает ли вызывающий объект блокировку записи.

(Унаследовано от AsyncReaderWriterLock)
NoMessagePumpSynchronizationContext

SynchronizationContext Возвращает объект , который при применении подавляет любой поток сообщений, который может выполняться во время синхронных блоков вызывающего потока.

(Унаследовано от AsyncReaderWriterLock)
SyncObject

Возвращает объект , используемый для синхронизации доступа к полям этого экземпляра.

(Унаследовано от AsyncReaderWriterLock)

Методы

Complete()

Приводит к тому, что новые запросы блокировки верхнего уровня блокируются, а задача Completion переходит в состояние завершения после снятия всех выданных блокировок.

(Унаследовано от AsyncReaderWriterLock)
Dispose()

Неблокирующая блокировка, которая разрешает параллельный доступ, монопольный доступ или параллельный доступ, который можно обновить до монопольного, устанавливая особые условия для ресурсов, которые должны быть подготовлены для параллельного или монопольного доступа.

(Унаследовано от AsyncReaderWriterLock)
Dispose(Boolean)

Удаляет управляемые и неуправляемые ресурсы, хранящиеся в этом экземпляре.

(Унаследовано от AsyncReaderWriterLock)
GetAggregateLockFlags()

Возвращает сводку флагов блокировки для всех вложенных блокировок.

GetHangReport()

Добавляет данные в отчет о зависаниях.

(Унаследовано от AsyncReaderWriterLock)
GetResourceAsync(TMoniker, CancellationToken)

Извлекает ресурс с указанным моникером.

GetTaskSchedulerForReadLockRequest()

Получение планировщика задач для выполнения продолжения при получении блокировки. AsyncReaderWriterLock использует специальный SynchronizationContext компонент для обработки монопольных блокировок и игнорирует предоставленный планировщик задач, поэтому он используется только в сценарии блокировки чтения. Этот метод вызывается в контексте выполнения для ожидания блокировки чтения, поэтому он может получить доступ в зависимости от TaskScheduler текущего контекста выполнения. Примечание. Планировщик задач используется только при последующей блокировке. Если блокировка будет выдана немедленно, когда CanCurrentThreadHoldActiveLock возвращает значение true, она будет игнорироваться.

(Унаследовано от 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)

Получает блокировку записи, асинхронно ожидая блокировки, если она в данный момент недоступна.

Явные реализации интерфейса

IHangReportContributor.GetHangReport()

Добавляет данные в отчет о зависаниях.

(Унаследовано от AsyncReaderWriterLock)

Применяется к

Потокобезопасность

Этот тип является потокобезопасной для всех членов.