2012-01-08 8 views
2

マルチスレッドプロセス(windowsサービス)では、メインスレッドはサブスレッドにEFクエリ(IQueryable<>)とページ番号(int)を渡します。スレッド間のObjectContextのライフタイムの管理

各サブスレッドは、クエリとページを使用してデータを取り出して処理します。

私は、必要に応じて各スレッドに対して新しいObjectContextを作成する必要があると思います。

他の提案はありますか?

クエリを作成し、ObjectContextを後で設定する方法はありますか? - Moved to a new question

ありがとう。

答えて

2

スレッドごとに新しいコンテキストを使用し、それを自分で処理します。コンテキストはスレッドセーフではないため、スレッド間で共有することは災害につながります。スレッドプールを使用する場合、スレッドの存続期間を制御できない場合や、複数の後続処理でスレッドを再利用する場合は、自分で処理する必要があります。

0

あなたのアプリがウェブアプリケーションか勝利アプリケーションかによって異なります。

しかし、これを処理できるDIフレームワークを介して注入するのが最善の方法です。例えばNinjectについて

はまた、接続し、メモリリークを防止InRequestScopeInThreadScopeInSingletonScopeと....

ようなライフサイクルの定義を事前に定義しています。

+0

Windowsサービス –

+0

これをシングルトンプロパティとして定義することが、IMHOの最適なソリューションになります。 –

関連する問題