2013-04-15 47 views
4

在我剛剛接管的應用程序中發現此行,並沒有多大意義。超時使用TransactionScopeOptions.Suppress

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

這一個nservicebus消息處理程序方法內立即發生,並覆蓋整個處理程序。

它似乎試圖抑制環境交易,並在一小時後中止。超時到期時會發生什麼?我認爲這只是選項的組合,並不意味着任何合理的。但是它會發生什麼?

回答

0

Suppress表示環境交易未被使用;而且在影響範圍內的業務不在交易中執行。這使您可以在當前事務之外執行操作,而不受該事務的影響。例如: -

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