長時間実行されるタスク (ドキュメント ストアへの書き込み、再インデックスのトリガーなど) のために新しいスレッドを開始する必要があります。
ASP.Net MVC Web サイトで Ninject を使用しています。本質的に、私は自分のオブジェクトをインスタンス化する Http リクエストから新しいスレッドを生成し、新しいスレッドで Http リクエストからデータベース接続などが使用されないようにしたいと考えています。スレッドを生成するために何を使用するか、または Web 要求コンテキストからデータベース セッションを再利用しないように Ninject を構成する方法がわかりません。
以下は、問題の基本的なシーケンス図です
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);
}
}
}
前もって感謝します、
ハミッシュ。