メインアプリケーションから開始されたスレッドがある場合。このスレッドでは、イベントが生成されます。イベントが生成されるたびに、オブジェクトが作成されます。そのオブジェクトには依存関係が必要なので、そのオブジェクトを注入したいと思います。この依存関係を作成されたオブジェクトに渡すにはどうすればよいですか?depandancyを下に渡す必要がありますか(そしてスレッドで動作するクラスに依存関係を知らせる必要があります)、またはこれを行うためのより良い方法がありますか?私はUnityを使用しています。
3085 次
1 に答える
4
最も安全な方法は、最初に各スレッドに新しいオブジェクトグラフを作成させることです。他のスレッドによる依存関係を渡さないでください。
依存性注入を使用すると、オブジェクトの存続期間に関する知識を一元化しようとします。この一元化された場所は、コンポジションルートと呼ばれます。あるスレッドから別のスレッドに依存関係を渡し始めるとき、コードのそれらの部分は、それらの依存関係を安全に渡すことができるかどうかを知る必要があります。たとえば、これらの依存関係はスレッドセーフですか?これは多くの状況で分析するのは簡単かもしれませんが、他の実装でこれらの依存関係を変更することはできません。これは、コード内にこれが発生する場所があり、どの依存関係が渡されるかを知る必要があるためです。この知識を再び分散化することで、DI構成の正確さについて推論することが難しくなり、競合状態を引き起こす方法でコンテナーを誤って構成することが容易になります。
このテーマの詳細については、このwikiページを参照してください:マルチスレッドアプリケーションで依存性注入を操作する方法
于 2012-04-23T13:42:48.217 に答える