在多线程进程( Windows服务)中,主线程将EF查询(IQueryable<>
)和页码(int
)传递给子线程
每个子线程使用查询和页面获取数据,然后处理它。
我想我应该在需要时为每个线程创建一个新的ObjectContext。
还有其他建议吗?
有没有办法创建一个查询并稍后为它设置一个ObjectContext?
- Moved to a new question
感谢。
答案 0 :(得分:2)
每个线程使用新上下文并自行处理。上下文不是线程安全的,因此在并发线程之间共享它是一种灾难。如果您使用线程池,如果您无法控制线程生命周期,或者您想为多个后续处理重用线程,则必须自行处理它。
答案 1 :(得分:0)
这取决于您的应用是Web应用还是获胜应用。
但最好的解决方案是通过可以为您处理此问题的DI框架注入它。
例如,Ninject
已预定义生命周期定义,例如InRequestScope
,InThreadScope
,InSingletonScope
和....
它还可以防止连接和内存泄漏。