varios tiempo programacion parametros multihilos metodos hilos ejemplo ejecutar creación creacion con cierto cada c# multithreading nhibernate session

c# - tiempo - nHibernate sesión y multihilo



metodos de hilos c# (2)

Tenía un método con muchas llamadas de persistencia que usaban una sesión nHibernate, funcionó, estaba bien. Pero necesitaba refactorizar este método, extrayendo un método de un contenido dentro de un bucle, por razones de subprocesamiento múltiple. Luego creé una clase con este método. Es como una refactorización normal, pero la sesión nHibernate dentro de esta llamada a método está rota, sin contexto, no la finalicé en ningún momento. Tiene problemas nHibernate con multihilo? Incluso cuando solo tengo un hilo más ejecutándose, tengo el mismo problema.

Utilizo nHibernate Session a través de un patrón SessionFactory y Fachada, es decir, la sesión no es un campo de estos objetos, es global en SessionFactory.

Haciéndolo un poco más claro:

ANTES DE:

Method() { ... persistence calls foreach(Thing..) { ...persistence calls for each thing (1) } ... }

DESPUÉS:

Method() { ... persistence calls foreach(Thing..) { create a thingResolver object with some data open a new thread with thingResolver.Method (1) starts this thread } .. waits for finishing threads and continues }

Nuestra nHibernate Session Factory es consciente de los subprocesos y almacena / recupera sesiones de nHibernate por subproceso. Está funcionando bien ahora;)



Las sesiones no son seguras para hilos en NHibernate por diseño . Por lo tanto, debería estar bien siempre que tenga una sesión usada por solo un hilo .

No estoy seguro de qué es lo que hace Resolver, pero si hace algunas llamadas de persistencia en la misma sesión que ha creado en el hilo de origen; esta es probablemente la causa de sus problemas, podría crear una sesión separada en su nuevo hilo para que sea una sesión por hilo si mi suposición es verdadera.

La referencia de NHibernate lo tiene en la sección 10.2

http://nhibernate.info/doc/nh/en/index.html#transactions