IOperationLockingStrategy - интерфейс

Объект, управляющий блокировками операций.

Definition

Пространство имён: Tessa.Platform.Operations
Сборка: Tessa (в Tessa.dll) Версия: 4.0.4
C#
public interface IOperationLockingStrategy

Методы

ExecuteInLockAsync Асинхронно выполняет действие actionAsync внутри эксклюзивной блокировки. Никакое другое вычисление не сможет быть выполнено, пока выполняется действие. При этом создаётся запись в Redis с ID = OperationTypeID и операция cо случайным ID и указанным описанием OperationDescription.
Возвращает идентификатор операции или null, если блокировку взять не удалось.
При взятии блокировки все операции не обязательно выполняются в одном и том же соединении с базой данных. Использование нескольких соединений может быть полезно для больших таймаутов, чтобы не удерживать одно и то же соединение несколько минут.
Чтобы гарантировать выполнение на одном и том же соединении с БД, вызовите метод внутри блока await using(dbScope.Create()) { ... }.
ReleaseLockAsync Снять блокировку, если она была взята без последующего автоматического сброса.

Методы расширения

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

См. также