2
我正在使用NHibernate作为ORM的Windows窗体应用程序。我们通常的模式看起来是这样的:从数据库不冻结的NHibernate数据访问GUI
- 获取对象图和填充GUI
- 让GUI用户编辑数据
- 保存对象图回数据库
的单位 - 这个概念只要需要用户编辑数据并点击保存按钮,NHibernate会话才会生效。因此,我们的会话实例化为步骤1的一部分,并作为步骤3的一部分进行处理。
现在,我想在保存操作期间显示不确定的进度条动画。因此,会话不能在GUI线程中生存,因为如果保存需要时间,会导致动画冻结。
我该如何最好地解决这个问题?
但是,这意味着该SaveOrUpdate方法是从一个线程池线程,而不是线程该会议被实例化调用,不它? –
@TormodFjeldskår:对。那是问题吗? –
是的,这是一个问题。从文档:“ISession不是线程安全的!不要在两个并发线程中访问同一个ISession,一个ISession通常只是一个工作单元!”参考文献:http://www.nhforge.org/doc/nh/en/index.html#transactions-threads –