【问题标题】:TransactionScope and Timeout IssueTransactionScope 和超时问题
【发布时间】:2010-07-27 13:27:04
【问题描述】:

我们知道 TransactionScope 类可以使用用户定义的超时值。但是退出 using {} 块时会引发超时异常。如何在超时值过去后立即抛出此超时异常?

【问题讨论】:

    标签: c# timeout transactionscope


    【解决方案1】:

    这是不可能的。

    TransactionScope 仅存储您启动事务的时间,然后在提交事务时检查该时间。
    它无法在任意点抛出异常。

    一般来说,在执行(托管代码的)任何点可以抛出的唯一异常是ThreadAbortException

    因此,如果您真的想这样做,您可以创建一个单独的线程,在超时期间休​​眠,然后中止您的原始线程。
    然而,这是一个可怕的想法。

    【讨论】:

    • 为什么你的解决方案很糟糕?它看起来很好。我实施了,效果很好。非常感谢。
    • 线程中止可以在任何地方中断代码并弄乱共享状态。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-18
    • 1970-01-01
    • 2010-12-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多