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();
           });
       }
    }
}

Ответы на вопрос(1)

Ваш ответ на вопрос