Пример #1
0
        public async Task Execute(DBConnectionNames connNames, string lockName, Func <Task> callBack, int timeout = -1)
        {
            await using (DBTransactionScope transactionScope = new DBTransactionScope(TransactionScopeOption.Required, new TransactionOptions()
            {
                IsolationLevel = IsolationLevel.ReadCommitted, Timeout = new TimeSpan(0, 30, 0)
            }))
            {
                try
                {
                    await _applicationLockStore.Lock(connNames, lockName, timeout);
                    await callBack();
                }
                finally
                {
                    await _applicationLockStore.UnLock(connNames, lockName);
                }

                transactionScope.Complete();
            }
        }