Я ухаживаю за созданием приложения Silverlight 3. Мне нужно некоторое руководство на высоком уровне для следующего сценария.Архитектура Silverlight 3 приложения
У меня есть страница, где пользователь заполняет кучу информации. В нижней части страницы есть кнопка отправки.
При щелчке, он передает информацию в базу данных (через службы ria), а затем мне нужно перенаправить пользователя на новую страницу.
Мой Submit метод в основном выглядит так:
void Click(object o, eventArgs e) {
ViewModel.SaveMyStuff();
this.NavigationService.Navigate(MyUri);
}
Поскольку метод SaveMyStuff() является асинхронным, функция Navigate выполняется почти немедленно. И кажется, что фиксация базы данных никогда полностью не завершена. Переход от страницы приводит к выгрузке (и модели просмотра).
Так что, в принципе, я не хочу, чтобы перенаправление выполнялось до тех пор, пока биткация БД не завершилась, поэтому я смотрю на проводку обработчиков событий, и все это превращается в путаницу. Есть ли какой-то образец или передовая практика для обработки того, могут ли страницы перемещаться от (и других основных механизмов страницы)?
Я имел некоторый код, который был в основном:
if (ViewModel.RiaDataContext.IsSubmitting) {
Thread.Sleep(500);
}
Но а), который, кажется, как уродливые взломать, и б) это условие никогда не ложь - кажется, там может быть ошибка в RIA Services.. или похожие.