如何解决错误“当前在此ComposablePartExportProvider中编写另一个批处理。一次只能编写一个批处理”。

时间:2011-04-27 20:37:35

标签: .net mef

我在使用MEF的应用程序中收到以下错误:

  

目前正在撰写另一个批次   这个ComposablePartExportProvider。   只有一个批次可以在a组成   时间。

关于如何解决此错误的信息似乎很少,并且不确定我应该提供哪些其他信息来获得一些帮助。

有没有其他人使用MEF收到此错误?如果是这样,你解决这个问题的方法是什么?

4 个答案:

答案 0 :(得分:4)

看看this forum post。听起来像你遇到的问题一样。

答案 1 :(得分:1)

我发现,如果您尝试构建导出列表以便动态匹配导入类型,container.GetExports<T>().Select(y => y.Value)的效果会更好。

使用container.ComposeParts(...)我必须拥有各种lock(){}块和另一个线程来进行编写。 GetExports<>似乎没有受此影响。

答案 2 :(得分:0)

在初始化组合容器时,有一个标志可启用线程安全选项。一旦启用此功能,您就不需要任何自定义锁定机制

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

答案 3 :(得分:0)

可能有太多线程同时使用这个ComposeParts函数,我只是锁定了这个函数,线程可以同步操作这个函数,一切顺利。

theme.mixins.toolbar.minHeight

}