4
我需要爲長時間運行的任務啓動一個新線程(寫入文檔存儲,觸發重新索引等)。在新線程中使用Ninject
我在一個ASP.Net MVC網站中使用Ninject。基本上,我想從我的Http Request中產生一個新的線程,它實例化它自己的對象,確保新線程中的Http Request沒有使用數據庫連接等。我不知道用什麼來產生線程,或者如何配置Ninject以不從Web請求上下文中重用我的數據庫會話。
下面是我讀過一些關於在Ninject命名範圍問題
的基本序列圖,但我不知道是否以任何方式的關聯。
我CommandProcessor的代碼將產生新的線程是:
public class CommandProcessor
{
private IKernel _serviceLocator;
public CommandProc(IKernel serviceLocator)
{
_serviceLocator = serviceLocator;
}
public void Process<TCommand>(TCommand command) where T : ICommand
{
var commandHandlers = _serviceLocator.Get<ICommandHandler<TCommand>>();
foreach (var commandHandler in commandHandlers)
{
// I want this call to be asynchronous
commandHandler.Handle(command);
}
}
}
由於提前,
哈米什。
嗯,這將使DB背景下從網絡請求範圍去不會瞬態呢? – Anders