Проблема Ninject Scope с задачами/потоками

У меня есть проект MVC3, в котором используются Ninject, Entity Framework и шаблон Unit of Work со слоем службы.

В моем классе AsyncService есть функция, запускающая фоновую задачу, которая, например, добавляет пользователей в репозиторий пользователей. Моя текущая проблема заключается в том, что задача выполняется правильно только в течение нескольких секунд, прежде чем я получаю сообщение об ошибке, что 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...
    }
}
8
задан Jason Kulatunga 18 May 2012 в 21:57
поделиться