1
我正盯着一个TransactionScope并订阅Transaction.Current.TransactionCompleted
。为了防止并行事务的问题,我使用Monitor。我能确定在任何情况下都会调用Transaction.Current.TransactionCompleted
吗?.net是否保证调用Transaction.Current.TransactionCompleted?
Monitor.Enter(TransactionScopeLockString);
TransactionOptions transactionOptions = new TransactionOptions();
TransactionScope result = new TransactionScope(scopeOption, transactionOptions);
Transaction.Current.TransactionCompleted += (sender, transactionEventArgs) =>
{
if (transactionEventArgs.Transaction.TransactionInformation.Status
== TransactionStatus.Aborted)
{
// clear stuff
}
Monitor.Exit(TransactionScopeLockString);
};