СИНХРОННЫЕ веб-сервисы и модальные диалоги!

вопрос в том....

Приложение возможно в Silverligth.

Можно ли реализовать вызов SYNChonous WebService?

Я пытаюсь реализовать любое приложение RIA, с Grids, Edits и с использованием WebServices в SL, но я не понимаю, как это сделать без вызовов SYNC.

И мне также нужно использовать МОДАЛЬНЫЕ ДИАЛОГИ для некоторых задач.

Я исследовал работу Дэниела Вогана, которому удается синхронно запускать вызовы веб-сервисов в ThreadPool, но как я могу сделать этот графический интерфейс, ожидая вызовов веб-сервисов?

Дэниел Вон Интернет: http://danielvaughan.orpius.com/post/Synchronous-Web-Service-Calls-with-Silverlight-2.aspx

Комбинируя эти базовые вещи для других языков, ИМХО можно построить настоящее приложение.

Выслушать предложения...

Чева.


person Cheva    schedule 06.03.2010    source источник


Ответы (2)


Лучше всего проанализировать фактическую цель, которая, поскольку вы хотите сделать это в графическом интерфейсе, состоит в том, чтобы предотвратить активность пользователя до тех пор, пока не будут получены или обработаны соответствующие ресурсы.

Одним из способов достижения этой цели может быть синхронный вызов, но он просто заблокирует пользовательский интерфейс недружественным для пользователя способом. Чего мы действительно хотим, так это заблокировать пользовательский интерфейс, но в информативной форме. На самом деле мы хотим, чтобы поток пользовательского интерфейса мог свободно отображать такое «Пожалуйста, подождите, я занят обработкой вашего запроса», предпочтительно в богатом виде пользовательского интерфейса (некоторая анимация или прогресс).

Для этого вы можете использовать элемент управления BusyIndicator (внутри которого вы размещаете весь или только часть вашего текущего пользовательского интерфейса). Вы найдете BusyIndicator в наборе инструментов Silverligt. Если вы используете VS2010 и Silverlight 4, аналогичный элемент управления теперь является частью Ria Services SDK и может называться Activity.

Теперь, когда вы хотите сделать что-то «синхронное», вы устанавливаете для свойства BusyIndicator.IsBusy значение true (в SL4 вы устанавливаете для свойства Activity.IsActive значение true). Затем сделайте асинхронный запрос, по завершении запроса вы установите для свойства значение false.

person AnthonyWJones    schedule 06.03.2010

Хорошо это или плохо, но Silverlight не поддерживает синхронные вызовы веб-служб. Лучше всего использовать что-то похожее на то, что предложил Энтони, чтобы получить желаемый конечный результат в вашем пользовательском интерфейсе, фактически не блокируя поток пользовательского интерфейса.

person Ash    schedule 07.03.2010