C# TransactionScope和超时问题

C# TransactionScope和超时问题,c#,timeout,transactionscope,C#,Timeout,Transactionscope,我们知道TransactionScope类可以使用用户定义的超时值。但从using{}块退出时引发超时异常。如何在超过超时值后立即抛出此timeoutexception?这是不可能的 TransactionScope只存储启动事务的时间,然后在提交事务时检查该时间。 它无法在任意点抛出异常 通常,在执行(托管代码)的任何时候可以引发的唯一异常是ThreadAbortException 因此,如果确实需要,可以创建一个单独的线程,在超时期间休眠,然后中止原始线程。 然而,这是一个可怕的想法。为什么

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

这是不可能的

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

通常,在执行(托管代码)的任何时候可以引发的唯一异常是
ThreadAbortException

因此,如果确实需要,可以创建一个单独的线程,在超时期间休眠,然后中止原始线程。

然而,这是一个可怕的想法。

为什么您的解决方案很可怕?看起来很好。我实现了它,效果非常好。非常感谢。线程中止可以在任何地方中断代码,并破坏共享状态。