WebClient, синхронный вызов
От: Аноним  
Дата: 23.09.09 05:20
Оценка:
Привет всем.

Речь идет о реализации WebClienta в Silverlight.
Особенность этой реализации, что они выкинули из нее все возможности синхронных
вызовов, оставив только асинхронные.
В результате логика программы принимает весьма причудливую форму.
В некоторых случаях очень бы хотелось получить все же синхронный вызов и
по его результатам — удачный, неудачный принимать дальнейшее решение.
Кто-то может подсказать какие дополнительные фокусы можно использовать
для получения синхронного вызова, из асинхронного.
Может есть просто другой класс для этого?

Заранее спасибо
Re: WebClient, синхронный вызов
От: RushDevion Россия  
Дата: 23.09.09 07:18
Оценка:
Я с Silverlight не работал, поэтому могу ошибаться.
Но, стандартно, асинхронный вызов возвращает IAsyncResult, у которого есть свойство AsyncWaitHandle.
Можно дождаться его освобождения WaitHandle.WaitOne, т.е.
var iar = client.BeginXXX();
WaitHandle.WaitOne(iar.AsyncWaitHandle);
var result = client.EndXXX(iar); //Will not block, but can throw :)


P.S.
Думается, если синронный вызов из Silverlite выкинули, то это неспроста.
Возможно концепция работы с WebServices в нем другая.
Может кто из более опытных товарищей просветит, для общего развития так сказать.
Re: WebClient, синхронный вызов
От: Аноним  
Дата: 23.09.09 08:10
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Привет всем. использовать

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

В концепции сильверлайта нельзя выполнять длительные операции в основном потоке, поэтому необходимо реализовывать архитектуру исключающие таких локов. это правило
Re: WebClient, синхронный вызов
От: Lexxpin  
Дата: 23.09.09 08:25
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Привет всем.


А>Речь идет о реализации WebClienta в Silverlight.

А>Особенность этой реализации, что они выкинули из нее все возможности синхронных
А>вызовов, оставив только асинхронные.
А>В результате логика программы принимает весьма причудливую форму.
А>В некоторых случаях очень бы хотелось получить все же синхронный вызов и
А>по его результатам — удачный, неудачный принимать дальнейшее решение.
А>Кто-то может подсказать какие дополнительные фокусы можно использовать
А>для получения синхронного вызова, из асинхронного.
А>Может есть просто другой класс для этого?

А>Заранее спасибо


Хочешь подвесить браузер, когда качаешь данные сервера?
Re[2]: WebClient, синхронный вызов
От: Аноним  
Дата: 23.09.09 09:18
Оценка:
L>Хочешь подвесить браузер, когда качаешь данные сервера?

Да нет не хочу. Просто получается с точки зрения пользователя следующая картина.
Он выполнил какие-то изменения и переключился на др. страницу (в пределах одного приложения Silverlight)
А через какое-то время приходит сообщение —
из серии не могу я это сохранить потому как ....
Особенно когда это может быть по виде пользователя, что-то не так сделал и нужно переделать.
Или нужно блокировать любые переключения пока не отработает сохранение.

Как-то и тот и другой вариант не очень
Re[3]: WebClient, синхронный вызов
От: Lexxpin  
Дата: 23.09.09 12:13
Оценка:
Здравствуйте, Аноним, Вы писали:


L>>Хочешь подвесить браузер, когда качаешь данные сервера?


А>Да нет не хочу. Просто получается с точки зрения пользователя следующая картина.

А>Он выполнил какие-то изменения и переключился на др. страницу (в пределах одного приложения Silverlight)
А>А через какое-то время приходит сообщение -
А>из серии не могу я это сохранить потому как ....
А>Особенно когда это может быть по виде пользователя, что-то не так сделал и нужно переделать.

Не обязательно, как напишешь так и будет работать. Например, использовать статус бар и т.п.

А>Или нужно блокировать любые переключения пока не отработает сохранение.


Если вкладки не зависимы и работа может выполняться параллельно, почему бы и не позволять переходить.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.