3
查看包含一堆間接嵌套事務處理器的代碼。我想知道在嵌套事務處理器中處理超時的方式。示例代碼嵌套事務處理器中的超時
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國 - 在嵌套的TransactionScope層次,超時是所有超時的工會。實際上,層次結構中所有範圍的最小超時優先。
第一個聲明說明所有超時的聯合,但第二個聲明說它是所有範圍中最小的。我是否理解上面的嵌套作用域代碼的默認超時時間是30秒而不是90?
使內部循環睡眠30秒。有一個超時,冒泡到根交易。但是,代碼捕獲根事務中的異常,從而使其在超時之前等待60秒。如果沒有處理來自嵌套作用域的異常,我相信它會出現超時異常。我認爲這些陳述確實意味着所有超時的交集。會做更多的測試... – user529265 2012-03-13 07:52:23