嵌套事务作用域中的超时

本文关键字:超时 作用域 嵌套事务 | 更新日期: 2023-09-27 18:27:28

查看一些包含一堆间接嵌套事务作用域的代码。我想知道在嵌套事务作用域中处理超时的方式。示例代码

void RootMethod()
{   
   //default timeout is 60 seconds 
   using(TransactionScope scope = new TransactionScope())
   {
      /* Perform transactional work here */
      SomeMethod();
      scope.Complete();
   }
}
void SomeMethod()
{   
   //set timeout to 30 seconds
   TimeSpan timeout = TimeSpan.FromSeconds(30);
   using(TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, timeout))
   {
      /* Perform transactional work here */
      scope.Complete();
   }
}

MSDN States-在嵌套的TransactionScope层次结构中,超时是所有超时的并集。实际上,层次结构中所有作用域的最小超时优先

第一个声明说所有超时的联合,但第二个声明说它是所有范围中最小的。我正确地理解了上面带有嵌套作用域的代码的默认超时是30秒而不是90吗?

嵌套事务作用域中的超时

肯定不会是90秒;这是,而不是并集。"现在到30秒"answers"不到60秒"的结合只是"现在到60秒。"。当然,通过故意屏蔽自己来验证应该非常简单。我怀疑它的意思是"所有超时的交叉点",在这种情况下,30秒才是最重要的;因为:只有最外层的事务才有权提交,但配置单元中的任何事务都可能毁掉整个事务(任何级别的回滚都会回滚整个最外层事务)