Я работаю с приложением Windows Forms, которое использует NHibernate в качестве ORM. Наш обычный шаблон выглядит примерно так:
- Получить граф объектов из базы данных и заполнить GUI
- Позволяет пользователю редактировать данные в графическом интерфейсе
- Сохранить граф объектов в базе данных
Это понятие единицы работы требует, чтобы сеанс NHibernate продолжался столько времени, сколько требуется пользователю для редактирования данных и нажатия кнопки Сохранить. Следовательно, наш сеанс создается как часть шага 1 и располагается как часть шага 3.
Теперь я хочу отображать неопределенную анимацию индикатора выполнения во время операции сохранения. Следовательно, сеанс не может жить в потоке GUI, так как это приведет к зависанию анимации, если сохранение займет время.
Как мне лучше всего решить эту проблему?