【发布时间】:2010-07-27 13:27:04
【问题描述】:
我们知道 TransactionScope 类可以使用用户定义的超时值。但是退出 using {} 块时会引发超时异常。如何在超时值过去后立即抛出此超时异常?
【问题讨论】:
标签: c# timeout transactionscope
我们知道 TransactionScope 类可以使用用户定义的超时值。但是退出 using {} 块时会引发超时异常。如何在超时值过去后立即抛出此超时异常?
【问题讨论】:
标签: c# timeout transactionscope
这是不可能的。
TransactionScope 仅存储您启动事务的时间,然后在提交事务时检查该时间。
它无法在任意点抛出异常。
一般来说,在执行(托管代码的)任何点可以抛出的唯一异常是ThreadAbortException。
因此,如果您真的想这样做,您可以创建一个单独的线程,在超时期间休眠,然后中止您的原始线程。
然而,这是一个可怕的想法。
【讨论】: