如果我以某种方式设法将NHibernate会话配置为每个线程,那么当我处理来自线程池的线程中的数据时,它会起作用吗?
来自池中的线程是“循环”的(是吗?)所以如果一个线程已经被使用过一次并且它再次被调用,那么它的会话是否会变得无法使用?
答案 0 :(得分:3)
ISession
的正确处理完全掌握在您手中,您有责任。不是ThreadPool。因此,如果您使用每个线程的会话实例,您仍然应该知道(并管理)它何时创建,并且明确地关闭并处置。
如果ISession
管理到位,请不要担心线程池的问题。另一方面,这也意味着,在[ThreadStatic]
字段中打开和保持会话是不正确的:
简短摘录:
线程池(按设计)使线程在调用之间保持活动状态。 这意味着ThreadStatic变量将在调用之间保持不变 到QueueUserWorkItem。