Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ FindOrCreatePromotedTransaction()

static Transaction System.Transactions.TransactionManager.FindOrCreatePromotedTransaction ( Guid transactionIdentifier,
DistributedTransaction dtx )
inlinestaticpackage

Definition at line 347 of file TransactionManager.cs.

348 {
349 Transaction transaction = null;
350 Hashtable promotedTransactionTable = PromotedTransactionTable;
351 lock (promotedTransactionTable)
352 {
353 WeakReference weakReference = (WeakReference)promotedTransactionTable[transactionIdentifier];
354 if (weakReference != null)
355 {
356 transaction = weakReference.Target as Transaction;
357 if (null != transaction)
358 {
359 dtx.Dispose();
360 return transaction.InternalClone();
361 }
362 lock (promotedTransactionTable)
363 {
364 promotedTransactionTable.Remove(transactionIdentifier);
365 }
366 }
367 transaction = new Transaction(dtx);
368 transaction._internalTransaction._finalizedObject = new FinalizedObject(transaction._internalTransaction, dtx.Identifier);
369 weakReference = new WeakReference(transaction, trackResurrection: false);
370 promotedTransactionTable[dtx.Identifier] = weakReference;
371 }
372 dtx.SavedLtmPromotedTransaction = transaction;
374 return transaction;
375 }
virtual void Remove(object key)
static void FireDistributedTransactionStarted(Transaction transaction)

References System.Transactions.Transaction._internalTransaction, System.Transactions.Distributed.DistributedTransaction.Dispose(), System.Transactions.TransactionManager.FireDistributedTransactionStarted(), System.Transactions.Distributed.DistributedTransaction.Identifier, System.Transactions.Transaction.InternalClone(), System.Transactions.TransactionManager.PromotedTransactionTable, and System.Collections.Hashtable.Remove().

Referenced by System.Transactions.TransactionInterop.GetTransactionFromExportCookie(), and System.Transactions.TransactionInterop.GetTransactionFromTransmitterPropagationToken().