Как устранить ошибку «В настоящее время составляется другой пакет в этом ComposablePartExportProvider. Одновременно может быть создан только один пакет». - PullRequest
3 голосов
/ 28 апреля 2011

Я получаю следующую ошибку в своем приложении, которая использует MEF:

В настоящее время создается другой пакет в этом ComposablePartExportProvider.Только одна партия может быть составлена ​​за один раз.

Кажется, что очень мало информации о том, как исправить эту ошибку, и не уверен, какую другую информацию я должен предоставить, чтобы даже получить некоторую помощь.

Кто-нибудь еще получил эту ошибку, используя MEF?Если да, то каким образом вы решили проблему?

Ответы [ 3 ]

4 голосов
/ 28 апреля 2011

Взгляните на это сообщение на форуме . Звучит так же, как и у вас.

1 голос
/ 20 января 2014

Я обнаружил, что если вы пытаетесь создать списки экспортов, чтобы соответствовать типам импорта на лету, container.GetExports<T>().Select(y => y.Value) работает намного лучше.

С container.ComposeParts(...) мне пришлось бы иметь все видыlock(){} блоков и другой поток для создания.GetExports<> похоже не страдает от этого.

0 голосов
/ 28 июня 2016

Во время инициализации составного контейнера существует флаг, позволяющий включить потокобезопасную опцию. Как только вы включите эту функцию, вам не понадобится никакой специальный механизм блокировки

var c = new AggregateCatalog();
c.Catalogs.Add(new AssemblyCatalog("MyAssemblyName"));
var container = new CompositionContainer(c, true); // true means that it is thread safe
...