RolesExtensionsExecuteInRolesLockAsync - метод

Асинхронно выполняет действие actionFunc внутри эксклюзивной блокировки на вычисление состава ролей или замещений. Никакое другое вычисление не сможет быть выполнено, пока выполняется действие. При этом создаётся операция LockOperationID с указанным описанием operationDescription. Возвращает признак того, что блокировка была взята и действие было выполнено. Значение false возвращается, если блокировку взять не удалось из-за таймаута при ожидании блокировки. При взятии блокировки все операции не обязательно выполняются в одном и том же соединении с базой данных. Использование нескольких соединений может быть полезно для больших таймаутов, чтобы не удерживать одно и то же соединение несколько минут. Чтобы гарантировать выполнение на одном и том же соединении с БД, вызовите метод внутри блока using(dbScope.Create()) { ... }.

Definition

Пространство имён: Tessa.Roles
Сборка: Tessa (в Tessa.dll) Версия: 3.6.0.22
C#
public static Task<bool> ExecuteInRolesLockAsync(
	this IOperationRepository operationRepository,
	string operationDescription,
	Func<CancellationToken, Task> actionFunc,
	ILogger logger = null,
	int timeoutSeconds = -1,
	CancellationToken cancellationToken = default
)

Параметры

operationRepository  IOperationRepository
Репозиторий, управляющий операциями. Не равен null.
operationDescription  String
Описание созданной операции. Может быть строкой локализации. Может быть равен null.
actionFunc  FuncCancellationToken, Task
Асинхронное действие, выполняемое внутри блокировки. Не равно null.
logger  ILogger  (Optional)
Объект, выполняющий логирование, или null, если логирование выполняется объектом по умолчанию.
timeoutSeconds  Int32  (Optional)
Таймаут взятия блокировки в секундах. Если указано отрицательное число (по умолчанию), то используется настройка RolesLockTimeoutSeconds в файле app.json.
cancellationToken  CancellationToken  (Optional)
Объект, посредством которого можно отменить асинхронную задачу.

Возвращаемое значение

TaskBoolean
Асинхронная задача, которая возвращает true, если блокировка успешно взята, действие выполнено, и блокировка освобождена; false, если блокировку не удалось взять из-за таймаута. Во всех остальных случаях выбрасывается исключение.

Примечание об использовании

В Visual Basic и C# этот метод можно вызывать как метод экземпляра для любого объекта типа IOperationRepository. При вызове метода для экземпляра следует опускать первый параметр. Дополнительные сведения см. в разделе Методы расширения (Visual Basic) или Методы расширения (Руководство по программированию в C#).

См. также