Замок ActiveRecord: поиск ошибок сеанса и доступ к отложенной загрузке свойства в разных потоках - PullRequest
1 голос
/ 10 мая 2010

У меня проблема с многопоточным настольным приложением, использующим Castle ActiveRecord в C #:

Чтобы сохранить графический интерфейс при поиске объектов на основе ввода пользователя, я использую BackgroundWorker для функции поиска. Некоторые из свойств объектов, особенно некоторые HasMany -отношения, помечены как Lazy.

Теперь, когда поиск завершен, и пользователь выбирает результирующий объект, должны отображаться некоторые свойства этого объекта. Но так как поиск был выполнен BackgroundWorker в другом потоке, доступ к свойствам завершился неудачно, так как сеанс для отложенного доступа больше не доступен.

Каков будет лучший способ выполнить поиск в дополнительной ветке, чтобы поддерживать графический интерфейс и правильно обращаться ко всем свойствам, включая помеченные как ленивые?

Спасибо за любые советы!

С уважением sc911

Ответы [ 2 ]

1 голос
/ 11 мая 2010

Решил это с этим хорошим сообщением в блоге здесь: http://www.darkside.co.za/archive/2008/09/09/castle-activerecord-lazy-loading-session-scopes-again.aspx

1 голос
/ 10 мая 2010

Пара вариантов:

  • При запросах, делайте все, что вам нужно позже, в главном потоке, избегая отложенной загрузки.
  • Используйте ISession.Lock () для повторного присоединения сущностей к ISession в основном потоке.
...