在多線程進程(Windows服務)中,主線程將EF查詢(IQueryable<>
)和頁碼(int
)傳遞給子線程。管理線程之間的ObjectContext生存時間
每個子線程使用查詢和頁面獲取他的數據,然後處理它。
我想我應該在需要時爲每個線程創建一個新的ObjectContext。
其他建議?
有沒有辦法創建一個查詢並在以後爲其設置ObjectContext?
- Moved to a new question
謝謝。
在多線程進程(Windows服務)中,主線程將EF查詢(IQueryable<>
)和頁碼(int
)傳遞給子線程。管理線程之間的ObjectContext生存時間
每個子線程使用查詢和頁面獲取他的數據,然後處理它。
我想我應該在需要時爲每個線程創建一個新的ObjectContext。
其他建議?
有沒有辦法創建一個查詢並在以後爲其設置ObjectContext?
- Moved to a new question
謝謝。
使用每個線程的新上下文並自己處理它。上下文不是線程安全的,因此在併發線程之間共享是一種災難。如果你使用線程池,如果你不能控制線程生命週期,或者你想重複使用線程進行多個後續處理,那麼處理它自己就是必須的。
這取決於您的應用程序是Web應用程序還是贏得應用程序。
但最好的解決方案是通過一個DI框架注入它,可以爲您處理這個。
例如Ninject
具有預定的生命週期定義像InRequestScope
,InThreadScope
,InSingletonScope
和....
它還可以防止連接和內存泄漏。
這是一個Windows服務 – 2012-01-08 13:06:16
因此將其定義爲單身屬性將是最好的解決方案恕我直言。 – 2012-01-08 13:07:53