Esempio n. 1
0
        public static IDisposable CreateTransactionScope(bool useTransaction = true)
        {
            if (useTransaction)
            {
                _transactionSyncRoot.Wait(TimeSpan.FromMinutes(1));
                var listener    = new DistributedTransactionListener();
                var transaction = new CommittableTransaction(TimeSpan.FromMinutes(10));
                transaction.TransactionCompleted += (_, __) => _transactionSyncRoot.Release();

                return(new CompositeDisposable(
                           listener,
                           transaction,
                           new TransactionScope(transaction, TimeSpan.FromMinutes(10), TransactionScopeAsyncFlowOption.Enabled)));
            }

            return(new TransactionScope(TransactionScopeOption.Suppress, TransactionScopeAsyncFlowOption.Enabled));
        }
Esempio n. 2
0
        public static IDisposable CreateTransactionScope(bool useTransaction = true)
        {
            if (useTransaction)
            {
                var listener            = new DistributedTransactionListener();
                var transactionDisposed = new ManualResetEventSlim();
                var transaction         = new CommittableTransaction(TimeSpan.FromMinutes(10));
                transaction.TransactionCompleted += (_, __) => transactionDisposed.Set();

                return(new CompositeDisposable(
                           listener,
                           new BlockingDisposable(transactionDisposed),
                           transaction,
                           new TransactionScope(transaction, TimeSpan.FromMinutes(10), TransactionScopeAsyncFlowOption.Enabled)));
            }

            return(new TransactionScope(TransactionScopeOption.Suppress, TransactionScopeAsyncFlowOption.Enabled));
        }