私はdryiocを使用して、複数のスレッドが必要とする依存関係を管理したいと考えています。 iocで依存関係を解決する必要がある各ジョブを渡すスレッドを開始したい。これが理想的にどんな援助にも感謝のように見えるべきかどうかわからない。Dryiocと複数のスレッド
1
A
答えて
1
あなたが必要な場合は、サービスはその後、スレッド(スレッドごとに単一インスタンス)にスコープコンテナのThreadScopeContext
を設定します。
RootContainer = new Container(scopeContext: new ThreadScopeContext());
RootContainer.Register<IService, MyService>(Reuse.InCurrentScope);
// in your thread
using (RootContainer.OpenScope())
{
var service = RootContainer.Resolve<IService>();
// use the service
}
あなたは新しいスレッドでライブを開始、その後同じインスタンスを伝播するサービスが必要な場合async/await
コール(場合によっては異なるスレッド)を使用して、AsyncExecutionFlowScopeContext
を使用します。
DryIocのスコープコンテキストは、オープンスコープを格納できるコンテナとは独立した第三者オブジェクトです。スレッドの静的な場合、またはAsyncLocal
変数の場合
もう1つの方法(デフォルトの動作)では、開いているスコープをスコープ付きコンテナに関連付けることですが、解決するにはこの新しいコンテナへの参照が必要です。ここで私は、任意のスコープのコンテキストを使用していないけど、scopedContainer
代わりのルート1から解決する必要があります。
RootContainer = new Container(); // without ambient scope context
RootContainer.Register<IService, MyService>(Reuse.InCurrentScope);
// in your thread
using (var scopedContainer = RootContainer.OpenScope())
{
var service = scopedContainer.Resolve<IService>();
// use the service
}
関連する問題
- 1. C#Mysqlと複数のスレッド?
- 2. Java Swingworkerと複数のスレッド
- 3. configureと複数のスレッド
- 4. 複数のスレッドとメモリ
- 5. WPF BitmapFrameと複数のスレッド
- 6. 複数のスレッド
- 7. 複数のスレッド
- 8. 複数のスレッド
- 9. 複数のスレッドのハンドラとスレッドのスレッドの比較
- 10. VS 7.1リリースコンパイルと複数スレッド
- 11. がDryIoc
- 12. DryIocレジストリクラス
- 13. 複数のスレッドへ
- 14. 複数のスレッド=複数のアプリケーションコンテキスト?
- 15. HTTPのダウンロードと複数のスレッド
- 16. 複数のCPUとスレッドのシングルスレッドプロセス
- 17. DryIOC WebAPIフォールバックコントローラ
- 18. 複数のスレッドが複数のパイプを必要とする
- 19. 複数のスレッドを持つRubyのパフォーマンスと1つのスレッド
- 20. スレッドごとに複数のコンテキスト
- 21. .NET GC仕様と複数のスレッド
- 22. タスクごとに複数のスレッドOpenMP
- 23. Silverlight 4 Riaサービスと複数のスレッド
- 24. DryIoc関数で解決する
- 25. 複数のスレッドのクォーツオンクラウドサーバー
- 26. 複数のスレッドのpandasデータフレーム
- 27. Arquillainの複数のスレッド
- 28. webdriver.ioノードサーバの複数のスレッド
- 29. 複数の無限スレッド
- 30. Java:複数のスレッド対ソケット
[DryIocウィキ](https://bitbucket.org/dadhi/dryioc/overview)から:_Thread-安全でロックフリー - 登録と解決はコンテナの状態を損なうことなく並行して進めることができます。 - ステートメントが真であれば、心配することなく任意のスレッドから自由に依存関係を注入できます。がんばろう! – BlueStrat