Exemplo n.º 1
0
        public void RollbackTransaction()
        {
            TransactionFailureReason reason = new TransactionFailureReason(null);

            bool done = false;

            RollbackTransaction(reason, ref done);
        }
Exemplo n.º 2
0
        private void NotifyRollbackTransaction(TransactionFailureReason reason, ref bool done)
        {
            if (OnRollbackTransactionSpecific != null)
            {
                OnRollbackTransactionSpecific(this, reason, ref done);
            }

            if (OnRollbackTransaction != null)
            {
                OnRollbackTransaction(this, reason);
            }
        }
Exemplo n.º 3
0
        public void ExecuteTransaction()
        {
            try
            {
                using (TransactionScope scope = TisTransactionScope.Get)
                {
                    Execute();

                    scope.Complete();

                    try
                    {
                        PerformPostCommitTasks();
                    }
                    catch (Exception exc)
                    {
                        throw new TisException(
                                  exc,
                                  "Fatal error: PostComplete tasks should not throw exceptions");
                    }
                }
            }
            catch (Exception oExc)
            {
                TransactionFailureReason reason = new TransactionFailureReason(oExc);
                bool done = false;

                RollbackTransaction(reason, ref done);

                if (!done)
                {
                    throw;
                }
            }
            finally
            {
                // Clear transaction
                ClearTransaction();
            }
        }
Exemplo n.º 4
0
        private void RollbackTransaction(TransactionFailureReason reason, ref bool done)
        {
            lock (this)
            {
                // Call RollbackTransaction for each transaction member
                foreach (ITransactable member in m_transactionMembers)
                {
                    try
                    {
                        member.RollbackTransaction();
                    }
                    catch (Exception exc)
                    {
                        Log.WriteException(exc);
                    }
                }

                NotifyRollbackTransaction(reason, ref done);

                PerformRollbackTasks();
                ClearTransaction();
            }
        }