美文网首页
【C#】TransactionScope 超时的处理方式

【C#】TransactionScope 超时的处理方式

作者: 冰麟轻武 | 来源:发表于2022-11-24 08:58 被阅读0次

这个异常会在 Dispose时触发,而不是Complete即使在规定时间内提交了,但如果释放时超时,依然会抛出异常

所以如果using范围较大,需要手动执行Dispose

换句话说,如果需要处理 TransactionScope 的异常,需要将Try包裹using,而不是反过来using包裹try

using (var trans = new TransactionScope(TransactionScopeOption.RequiresNew, new TransactionOptions { Timeout = TimeSpan.FromSeconds(2) }))
{
    try
    {
        trans.Complete();
    }
    catch(Exception e)
    {
        // 这样没办法捕获超时异常
    }
}

正确的捕获方式

try
{
    using (var trans = new TransactionScope(TransactionScopeOption.RequiresNew, new TransactionOptions { Timeout = TimeSpan.FromSeconds(2) }))
    {
        trans.Complete();
    }
}
catch(Exception e)
{

}

相关文章

网友评论

      本文标题:【C#】TransactionScope 超时的处理方式

      本文链接:https://www.haomeiwen.com/subject/pdqzxdtx.html