Тема: MEF створення елементів в різних потоках.
Є наступна модель: ASP.NET MVC 4 проект, в контроллерах використовуються самописні class Service, котрі виконують операції (вибірка/додавання/редагування). За створення цих об'єктів відповідаеє MEF. В дуже спрощенному вигляді виникає ось така проблема: при одночасному створені двох об'єктів виникає виключення: Выполняется составление другого пакета в этом ComposablePartExportProvider. Одновременное составление нескольких пакетов не поддерживается.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.ComponentModel.Composition;
using System.ComponentModel.Composition.Hosting;
using System.Reflection;
namespace ConsoleApplication1
{
class Program
{
static CompositionContainer container;
static void Main(string[] args)
{
container = new CompositionContainer(new AssemblyCatalog(Assembly.GetExecutingAssembly()));
var tasks = new TaskFactory();
var t1 = tasks.StartNew(Run);
var t2 = tasks.StartNew(Run);
t1.Wait();
t2.Wait();
Console.WriteLine("complite...");
Console.ReadKey();
}
private static void Run()
{
var service = new Service();
container.ComposeParts(service);
service.PrintData();
Thread.Sleep(10000);
service.PrintData();
}
}
public class Service
{
[Import(typeof(Repository))]
private Repository Repository { get; set; }
public void PrintData()
{
}
}
[Export(typeof(Repository))]
public class Repository
{
}
}