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)); }
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)); }