Tengo un proyecto MVC3 que usa Ninject, Entity Framework y el patrón de Unidad de Trabajo con una capa de Servicio.Problema Ninject Scope con Tareas/Hilos
Mi clase AsyncService tiene una función que inicia una tarea en segundo plano que, por ejemplo, agrega usuarios al repositorio de usuario. Mi problema actual es que la tarea solo se ejecuta correctamente durante unos segundos antes de que me llegue el error de que se ha eliminado el DbContext. Mi contexto de base de datos, que se inyecta con InRequestScope() de Ninject, parece estar siendo eliminado, ya que InRequestScope() lo vincula a HttpContext.
He leído sobre InThreadScope(), pero no estoy seguro de cómo implementarlo correctamente en mi proyecto MVC.
Mi pregunta es: ¿Cuál es la forma correcta de usar Ninject en mi tarea?
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...
}
}
¿Existe un código de ejemplo? Jason, ¿dónde puedes lograr que funcione? Estoy teniendo el mismo problema y seguir el enlace no me ayudó. –
Tengo este mismo problema, me gustaría ver algún código de muestra para este escenario. –