代码之家  ›  专栏  ›  技术社区  ›  Daniel

TransactionCompleted事件的替代示例?

  •  1
  • Daniel  · 技术社区  · 15 年前

    MSDN entry for TransactionCompleted :

    您可以注册此事件,而不是使用可变登记来获取事务的结果信息。

    注意安全 注册此事件会对其所附事务的性能产生负面影响。

    有没有人有一个例子,甚至是一个解释,说明如何加入一个交易,而仅仅是为了得到交易完成的通知?

    1 回复  |  直到 15 年前
        1
  •  0
  •   Stefan    15 年前

    这里的msdn可能有点误导人。注册事件的速度至少应与注册虚拟资源管理器的速度相同(而不是我测试过的速度)。

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

    你还是可以试一下入伍的方式。只是实施 IEnlistmentNotification 并打电话 enlistment.Done() 每种方法。您还需要将代码添加到 Commit() 方法。

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