5
我有一個類將日誌信息保存到數據庫(在NServiceBus消息Handle
方法中)。有條件地在一個單獨的線程上運行一個類的方法
大多數情況下,日誌記錄可以在主流程的單獨線程(和事務)上完成。但是這一切都需要在同一個後臺線程上完成(這意味着它們必須按順序完成,而不是與主進程同步)。
但是,一旦它啓動外部鍵控從NServiceBus的實際數據,它需要在同一個線程。
下面是一些示例代碼:
public class MyExample
{
public void LogSomeStuff(Stuff stuff)
{
using (MoveOutsideTransaction())
{
// Do Method Stuff here
dataAccess.SaveChanges();
}
}
public void LogSomeOtherStuff(Stuff stuff)
{
using (MoveOutsideTransaction())
{
// Do Other Method Stuff here
dataAccess.SaveChanges();
}
}
private IDisposable MoveOutsideTransaction()
{
if (loggingOutsideTransaction)
return new TransactionScope(TransactionScopeOption.Suppress);
return null;
}
}
我想知道是否有使用我的交易條件也有條件地移動運行在不同的線程的方式。 (但只有當它抑制了交易。)
這看起來不錯,但我的許多方法有幾個參數。大多數是'字符串'和'int's,但我需要通過它們。有沒有辦法做到這一點與此設置? (這似乎只是調用方法,但不允許參與每個調用。) – Vaccano 2012-03-21 20:46:57
@Vaccano:您可以使用「動作」來代替。或者,當通過lambda表達式構建'Action'委託時,您可以對變量執行閉包。 –
2012-03-21 21:59:26