【问题标题】:TransactionScope and DependantTransactionTransactionScope 和 DependantTransaction
【发布时间】:2012-05-31 07:29:55
【问题描述】:

我能否获得一个与 DB 或 File-IO 无关的用法示例?

我已阅读有关 IEnlistmentNotification 和 Transactions 的内容,想知道是否可以为仅在内存中的自定义类(如我自己的资源管理器)使用 Transactional 行为?

我想知道的场景 - 假设我在内存中有一些数据结构,它有 5 个属性(线程安全)。 我启动 5 个线程来更新每个属性(可以说它的计算密集型)。 现在 4 可能会成功,而 5th 可能会失败,在这种情况下,我想将我的数据结构回滚到其原始状态。我可以为这种情况实施 DependantTransaction 吗?

PS:我知道我可以手动保存克隆副本,将其恢复到 catch 块中,等等。

【问题讨论】:

    标签: c# multithreading transactions transactionscope


    【解决方案1】:

    对于内存中的对象,已经有一些事务范围提供程序的第 3 方实现;但是,一般来说,它们有点脆弱,并不值得痛苦 - 尤其是,因为您使用的是线程。坦率地说,我强烈建议您更多地查看常规的备忘录模式,或不需要回滚的不可变数据结构(即,您只需丢弃单独的变异副本)。

    是的,它可能可以完成,但是除非编写一个事务范围的提供程序是您项目的目的,我建议您首先专注于交付应用程序逻辑。就说吧

    【讨论】:

    • 感谢纪念品模式 :)
    • 你能举个例子吗。。我还是不知道除了DB还能用在哪里。。
    • @Makubex DB 以外的其他用途? WCF怎么样? MSMQ?它们都支持事务。然而,事务性内存是......尴尬。
    【解决方案2】:

    如果有其他人感兴趣,可以找到这些 -

    Another SO question

    STM in C#

    STM.NET Library

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-11
      • 2018-07-02
      相关资源
      最近更新 更多