使用TransactionScopeOptions.Suppress超时

时间:2013-04-15 18:23:01

标签: c# transactions nservicebus

在我刚刚接手的应用程序中找到了这一行,并没有多大意义。

using (new TransactionScope(TransactionScopeOption.Suppress, new TimeSpan(1,0,0))) {

这会立即发生在nservicebus消息处理程序方法中,并覆盖整个处理程序。

它似乎试图压制环境交易并在一小时后中止。超时到期后会发生什么?我认为这只是一个选项的组合,并不意味着任何合理的。但是它会导致什么呢?

1 个答案:

答案 0 :(得分:0)

Suppress表示不使用环境事务;而且,在有效的情况下,范围内的操作不会在事务中执行。这允许您在当前事务之外执行操作,而不受该事务的影响。 e.g:

using(var trans = new TransactionScope())
{
   // do operations within transaction
   using(var unscoped = new TransactionScope(TransactionScopeOption.Suppress))
   {
      // do "immediate" operations
   }
   // do operations within transaction
   // NOTE: No trans.Complete() called
}

// operations performed within "scoped" are not rolled back.

我不确定超时对Suppress

是否真的有意义