System.Transactions.TransactionStatePromotedBase.Timeout C# (CSharp) Method

Timeout() private method

private Timeout ( InternalTransaction tx ) : void
tx InternalTransaction
return void
        internal override void Timeout(InternalTransaction tx)
        {
            // LTM gives up the ability to control Tx timeout when it promotes.
            try
            {
                if (tx._innerException == null)
                {
                    tx._innerException = new TimeoutException(SR.TraceTransactionTimeout); ;
                }
                tx.PromotedTransaction.Rollback();

                TransactionsEtwProvider etwLog = TransactionsEtwProvider.Log;
                if (etwLog.IsEnabled())
                {
                    etwLog.TransactionTimeout(tx.TransactionTraceId);
                }
            }
            catch (TransactionException te)
            {
                // This could fail for any number of reasons based on the state of the transaction.
                // The Ltm tries anyway because PSPE transactions have no timeout specified and some
                // distributed transaction managers may not honer the timeout correctly.

                // The exception needs to be caught because we don't want it to go unhandled on the
                // timer thread.

                TransactionsEtwProvider etwLog = TransactionsEtwProvider.Log;
                if (etwLog.IsEnabled())
                {
                    etwLog.ExceptionConsumed(te);
                }
            }
        }