每个线程的NHibernate会话是否与线程池一起工作?

时间:2013-01-17 01:46:10

标签: nhibernate session threadpool

如果我以某种方式设法将NHibernate会话配置为每个线程,那么当我处理来自线程池的线程中的数据时,它会起作用吗?

来自池中的线程是“循环”的(是吗?)所以如果一个线程已经被使用过一次并且它再次被调用,那么它的会话是否会变得无法使用?

1 个答案:

答案 0 :(得分:3)

ISession的正确处理完全掌握在您手中,您有责任。不是ThreadPool。因此,如果您使用每个线程的会话实例,您仍然应该知道(并管理)它何时创建,并且明确地关闭并处置。

如果ISession管理到位,请不要担心线程池的问题。另一方面,这也意味着,在[ThreadStatic]字段中打开和保持会话是不正确的:

简短摘录:

  

线程池(按设计)使线程在调用之间保持活动状态。   这意味着ThreadStatic变量将在调用之间保持不变   到QueueUserWorkItem。