2012-01-08 30 views
2

在多線程進程(Windows服務)中,主線程將EF查詢(IQueryable<>)和頁碼(int)傳遞給子線程。管理線程之間的ObjectContext生存時間

每個子線程使用查詢和頁面獲取他的數據,然後處理它。

我想我應該在需要時爲每個線程創建一個新的ObjectContext。

其他建議?

有沒有辦法創建一個查詢並在以後爲其設置ObjectContext? - Moved to a new question

謝謝。

回答

2

使用每個線程的新上下文並自己處理它。上下文不是線程安全的,因此在併發線程之間共享是一種災難。如果你使用線程池,如果你不能控制線程生命週期,或者你想重複使用線程進行多個後續處理,那麼處理它自己就是必須的。

0

這取決於您的應用程序是Web應用程序還是贏得應用程序。

但最好的解決方案是通過一個DI框架注入它,可以爲您處理這個。

例如Ninject具有預定的生命週期定義像InRequestScopeInThreadScopeInSingletonScope和....

它還可以防止連接和內存泄漏。

+0

這是一個Windows服務 – 2012-01-08 13:06:16

+0

因此將其定義爲單身屬性將是最好的解決方案恕我直言。 – 2012-01-08 13:07:53