IOC DI Многопотоковое определение жизненного цикла в фоновых задачах
У меня есть приложение, которое использует IOC и DI для создания и внедрения служб.
У меня есть сервисный уровень, который обрабатывает некоторую бизнес-логику, на сервисном уровне у меня есть хранилище, которое связывается с базой данных. Этот репозиторий использует DataContext, который не является потокобезопасным.
Я хочу запускать некоторые функции в службе асинхронно, используя фоновые задачи, но знаю, что это вызовет проблемы с хранилищем. Поэтому я хочу, чтобы репозиторий создавался для каждого фонового потока. Как это достигается? Я использую StructureMap в качестве IoC.
public class Service : IService
{
IRepository _repository;
public Service(IRepository repository)
{
this._repository = repository;
}
public void DoSomething()
{
// Do Work
_repository.Save();
}
}
public class Controller
{
IService _service;
public Controller(IService service)
{
this._service = service;
}
public Action DoSomethingManyTimes()
{
for(int i =0; i < numberOfTimes; i++)
{
Task.Factory.StartNew(() =>
{
_service.DoSomething();
});
}
}
}