2010-03-06 70 views
2

问题是......SYNCRHONOUS WebServices和模态对话框!

该应用程序可能在SilverLigth中。

可以实现SYNChonous WebService调用吗?

我尝试实现任何应用程序RIA,使用网格,编辑和使用SL中的Web服务,但我不明白如何在没有SYNC调用的情况下实现它。

而且我还需要为某些任务使用MODAL DIALOGS。

我调查了Daniel Vaughan的工作,他设法在一个ThreadPool中同步运行Web服务调用,但是如何才能做到这一点,等待调用webservices?

丹尼尔·沃恩网站:http://danielvaughan.orpius.com/post/Synchronous-Web-Service-Calls-with-Silverlight-2.aspx

结合其他语言的这些基本的东西,恕我直言,是不可能建立真正的应用程序。

听到建议...

Cheva。

回答

1

它最好分析实际目标,因为您想在GUI中执行此操作,所以要防止用户活动,直到获取或处理了适当的资源。

实现这一目标的一种方法是进行同步呼叫,但只会以用户不友好的方式锁定用户界面。我们真正想要的是锁定UI,但以一种信息的方式。事实上,我们希望UI线程可以免费显示这样的“请稍等我忙于处理您的请求”,而且可以使用丰富的用户界面方式(某些动画或进度正在进行)。

为了您可以使用BusyIndicator控件(在其中放置所有或部分当前UI)。你会在Silverligt Toolkit中找到BusyIndicator。如果您使用的是VS2010和Silverlight 4,则类似控件现在是Ria Services SDK的一部分,可以称为Activity

现在,当您想要执行“同步”操作时,您将BusyIndicator.IsBusy属性设置为true(在SL4中将Activity.IsActive设置为true)。然后发出异步请求,完成请求后将属性设置为false。

0

无论是好还是坏,Silverlight都不支持对Web服务的同步调用。你最好的选择是采用与安东尼提出的类似的东西,以便在你的UI中获得想要的最终结果而不需要实际锁定UI线程。