Castle ActiveRecord:会话错误搜索和访问不同线程中的延迟加载属性

时间:2010-05-10 14:48:52

标签: c# multithreading castle-activerecord

我在C#中使用Castle ActiveRecord的多线程桌面应用程序出现问题:

为了在根据用户输入搜索对象时保持GUI处于活动状态,我使用BackgroundWorker作为搜索功能。对象的某些属性(尤其是某些HasMany - 关系)标记为Lazy

现在,当搜索完成并且用户选择结果对象时,应显示此对象的某些属性。但由于BackgroundWorker在另一个线程中进行了搜索,因此访问属性会失败,因为延迟访问的会话不再可用。

在额外的线程中进行搜索以保持GUI活动并正确访问所有属性(包括那些标记为懒惰的属性)的最佳方法是什么?

感谢您的任何建议!

此致 sc911

2 个答案:

答案 0 :(得分:1)

有两种选择:

  • 查询时,请在主线程中稍后加载所需的任何内容,从而避免延迟加载。
  • 使用ISession.Lock()将实体重新附加到主线程中的ISession。

答案 1 :(得分:1)