2011-04-18 14 views
2

でGetComponentPartsをしながら、それは私のWCFアプリケーションでエラー私はエラー以下になっていますGetComponentPartsをしながら具体的には、MEF

を複数のメッセージを処理しながら、私は連続ループでインポートを行う一方、組成物は、単一組成物を生成reporoducesエラー。根本原因は以下のとおりです。詳細については、CompositionException.Errorsプロパティを確認してください。

1)'100 '回の反復で完了しなかったため、合成に失敗しました。これは、共有されていない作成ポリシーでマークされたパーツの依存グラフのサイクルによって引き起こされる可能性が最も高いです。私は、根本的な原因を見つけるために、CompositionException.Errorsを見つけるカント

もう一つ。

、可能な回避策どのような示唆、これはほとんどの時間を働いているので、私は...

多くのおかげ

+0

MEFによってインスタンス化された部品間の循環依存性があり、コンポーネントの構造を書き留めておいてください(ここにコードを投稿してください) – tchrikch

+0

新しい独立したオブジェクト作成され、そのほとんどの時間の作業 –

答えて

1

をどのような方法を示唆し、ネット上の単一のスレッドを取得していない午前として、それはおそらくですしてくださいMEFの内部状態を壊してこのエラーの原因となっているスレッドの問題です。このようComposeComposeParts、またはAddExportedValueなど - 複数のスレッドからCompositionContainerを使用する場合

、あなたはtrueに設定でisThreadSafeパラメータでそれを作成し、利用可能なもの変更するメソッドを呼び出さないようにする必要があります。

安全に呼び出せるメソッドは、GetExportメソッドとSatisfyImportsメソッドです。

+0

あなたの提案を試してみたい –

関連する問題