【发布时间】:2014-09-05 14:09:57
【问题描述】:
我正在盯着一个 TransactionScope 并订阅 Transaction.Current.TransactionCompleted。为了防止并行事务出现问题,我使用了 Monitor。我可以确定在任何情况下都会调用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);
};
【问题讨论】: