Проблема Ninject Scope с задачами / потоками
У меня есть проект MVC3, который использует Ninject, Entity Framework и шаблон Unit of Work со слоем Service.
Мой класс AsyncService имеет функцию, которая запускает фоновую задачу, которая, например, добавляет пользователей в репозиторий User. Моя текущая проблема заключается в том, что задача выполняется правильно только в течение нескольких секунд, прежде чем я получаю сообщение об ошибке DbContext. Мой контекст базы данных, который внедряется с помощью InRequestScope () Ninject, кажется, удаляется, так как 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...
}
}