私は、Ninject、Entity Framework、および作業単位のパターンをサービスレイヤーで使用するMVC3プロジェクトを持っています。タスク/スレッドに関するNinjectスコープの問題
My AsyncServiceクラスには、ユーザーリポジトリにユーザーを追加するバックグラウンドタスクを開始する関数があります。 私の現在の問題は、DbContextが破棄されたというエラーが出る前に、タスクが数秒間だけ正しく実行されることです。 InRequestScope()がHttpContextと結びついているため、NinjectのInRequestScope()が注入されたデータベースのコンテキストが破棄されているようです。
私はInThreadScope()について読んだことがありますが、MVCプロジェクトで正しく実装する方法がわかりません。
私の質問:私の仕事でNinjectを使う正しい方法は何ですか?
public class AsyncService
{
private CancellationTokenSource cancellationTokenSource;
private IUnitOfWork _uow;
public AsyncService(IUnitOfWork uow)
{
_uow = uow;
}
public void AsyncStartActivity(Activity activity)
{
...snip...
this.cancellationTokenSource = new CancellationTokenSource();
var cancellationToken = this.cancellationTokenSource.Token;
var task = Task.Factory.StartNew(() =>
{
foreach (var user in activity.UserList)
{
this._uow.UserRepository.Add(new User() {UserID = user});
}
this._uow.Save();
}, cancellationToken);
...snip...
}
}
サンプルコードがあり、1つの方法とのインタフェースでありますか?ジェイソン、あなたはそれを働かせることができますか?私は同じ問題を抱えており、リンクをたどっても助けにはならなかった。 –
私はこの同じ問題がある、私はこのシナリオのいくつかのサンプルコードを見たいと思います。 –