来自MSDN entry for TransactionCompleted:
您可以注册此活动,而不是使用易失登记来获取交易的结果信息。
警告注册此活动会对其附加的交易的效果产生负面影响。
有没有人有一个例子,甚至是解释,如何在交易中登记,只是为了通知它的完成?
答案 0 :(得分:0)
MSDN可能在这里有点误导。注册事件的速度应该至少与招募虚拟资源管理器一样快(不是我测试过它)。
问题是,如果您登记,交易将成为分布式交易(因为现在至少涉及两个资源管理器)。这样的事务处理速度较慢(使用数据库服务器或使用的服务器更多IO)。
您仍然可以尝试登记方式。只需实施IEnlistmentNotification
并在每种方法中调用enlistment.Done()
即可。您还需要将代码添加到Commit()
方法。
然后将对您的实现的引用传递给事务的EnlistVolatile(..)
方法(选项设置为None
)。