TransactionCompleted事件的替代示例?

时间:2010-09-16 15:55:07

标签: .net transactions system.transactions

来自MSDN entry for TransactionCompleted

  

您可以注册此活动,而不是使用易失登记来获取交易的结果信息。

     

警告注册此活动会对其附加的交易的效果产生负面影响。

有没有人有一个例子,甚至是解释,如何在交易中登记,只是为了通知它的完成?

1 个答案:

答案 0 :(得分:0)

MSDN可能在这里有点误导。注册事件的速度应该至少与招募虚拟资源管理器一样快(不是我测试过它)。

问题是,如果您登记,交易将成为分布式交易(因为现在至少涉及两个资源管理器)。这样的事务处理速度较慢(使用数据库服务器或使用的服务器更多IO)。

您仍然可以尝试登记方式。只需实施IEnlistmentNotification并在每种方法中调用enlistment.Done()即可。您还需要将代码添加到Commit()方法。

然后将对您的实现的引用传递给事务的EnlistVolatile(..)方法(选项设置为None)。