Я новичок в Silverlight. У меня есть приложение, над которым я работаю, которому требуются некоторые данные с сервера, прежде чем пользователь сможет начать работу с приложением. Эти данные доступны через службу WCF на веб-сервере.

У меня такой вопрос: как лучше всего получить эти данные при запуске приложения Silverlight?

Я думал, что нужно создать статический класс со статическим членом, который будет хранить результаты, и сделать вызов службы WCF в обработчике событий Application_Startup. Меня беспокоит то, что если этот вызов выполняется асинхронно, как я могу быть уверен, что данные будут получены из службы до того, как пользователь будет взаимодействовать с приложением?

Благодарность

2
Scott Mitchell 1 Июл 2011 в 07:40

2 ответа

Лучший ответ

Вы должны помнить, что метод Application_Startup фактически загружается, когда появляется процентная полоса Silverlight, а не до тех пор, пока вы не доберетесь до:

this.RootVisual = new MainPage();

Что вы можете поставить индикатор занятости или фактически визуально показать свое приложение. Итак, что бы я сделал, это при обратном вызове Async, я бы затем отобразил:

this.RootVisual = new MainPage();

После того, как вы получили свои данные обратно.

Другой комментарий говорит об использовании BusyIndicator, но вы не можете сделать это в файле App.Xaml или App.Xaml.cs, поскольку на данный момент главной страницы еще нет.

Благодарность

1
Robbie Tapping 1 Июл 2011 в 08:20

Самый простой способ - позволить приложению запуститься в обычном режиме и использовать элемент управления BusyIndicator, чтобы запретить пользователю взаимодействовать с приложением.

Вы можете вызвать свою службу во время запуска и заменить/отключить элемент управления BusyIndicator после возврата вызова wcf. По следующей ссылке вы найдете несколько полезных советов по запуску приложения Silverlight: Http://blogs.msdn.com/b/slperf/archive/2010/08/13/silverlight-startup-best-practices.aspx
2
Klinger 1 Июл 2011 в 08:15