private TxEnlistment GetEnlistment() { var tx = Transaction.Current; TxEnlistment enlistment; if (TxEnabled && tx != null) { lock (_enlistmentsLock) { if (_enlistments == null) { _enlistments = new Dictionary<string, TxEnlistment>(); } if (_enlistments.ContainsKey(tx.TransactionInformation.LocalIdentifier)) { enlistment = _enlistments[tx.TransactionInformation.LocalIdentifier]; } else { enlistment = new TxEnlistment(tx); enlistment.IgnoreExceptionsInRollback = IgnoreExceptionsInRollback; _enlistments.Add(tx.TransactionInformation.LocalIdentifier, enlistment); } } } else { enlistment = new TxEnlistment(); } return enlistment; }
private static void EnlistOperation(IRollbackableOperation operation) { Transaction tx = Transaction.Current; TxEnlistment enlistment; lock (_enlistmentsLock) { if (_enlistments == null) { _enlistments = new Dictionary<string, TxEnlistment>(); } if (!_enlistments.TryGetValue(tx.TransactionInformation.LocalIdentifier, out enlistment)) { enlistment = new TxEnlistment(tx); _enlistments.Add(tx.TransactionInformation.LocalIdentifier, enlistment); } enlistment.EnlistOperation(operation); } }