我有一个使用Ninject,实体框架和工作模式的单位与服务层的MVC3项目。
我AsyncService类有启动一个后台任务,作为一个例子,将用户添加到用户资料库的功能。 我现在的问题是,我才得到了的DbContext已经被布置在错误的任务只运行正常了几秒钟。 我的数据库上下文,它被注入Ninject的InRequestScope()似乎是越来越布置,为InRequestScope()它关系到HttpContext的。
我读过有关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...
}
}