【问题标题】:Example of alternative to TransactionCompleted event?TransactionCompleted 事件的替代示例?
【发布时间】:2010-09-16 15:55:07
【问题描述】:

来自MSDN entry for TransactionCompleted

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

警告注册此事件会对它所附加的交易的性能产生负面影响。

有没有人有一个例子,甚至是解释,说明如何加入一个事务以便仅仅被通知它的完成?

【问题讨论】:

    标签: .net transactions system.transactions


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 只有在多个 durable 资源管理器登记时,事务才会变为分布式。 EnlistVolatile 永远不会促进交易。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-16
    相关资源
    最近更新 更多