2010-03-06 4 views
2

вопрос ...SYNCRHONOUS WebServices И модальные диалоги!

Приложение может быть в Silverligth.

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

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

И для некоторых задач мне также необходимо использовать MODAL DIALOGS.

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

Daniel Vaughan Web: http://danielvaughan.orpius.com/post/Synchronous-Web-Service-Calls-with-Silverlight-2.aspx

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

Слушайте предложения ...

Cheva.

ответ

1

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

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

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

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

0

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

Смежные вопросы