代码之家  ›  专栏  ›  技术社区  ›  Cheva

同步WebServices和模态对话框!

  •  2
  • Cheva  · 技术社区  · 14 年前

    问题是……

    应用程序可能在Silverligth中。

    可以实现同步webservice调用吗?

    我试图实现任何应用程序ria,在sl中使用网格、编辑和使用webservices,但是我不明白如何在没有同步调用的情况下实现它。

    我还需要在一些任务中使用模态对话框。

    我调查了daniel vaughan的工作,他设法在一个线程池中同步运行web服务调用,但是我如何做到gui,等待对web服务的调用?

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

    结合其他语言的这些基本功能,imho可以构建真正的应用程序。

    听取建议…

    Cheva。

    2 回复  |  直到 14 年前
        1
  •  1
  •   AnthonyWJones    14 年前

    最好分析实际的目标,因为您希望在gui中这样做,这是为了防止用户活动,直到获取或处理了适当的资源。

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

    你可以使用 BusyIndicator 控件(在其中放置当前用户界面的全部或部分内容)。你会发现 业务指标 在Silverligt工具包中。如果您使用的是vs2010和silverlight 4,那么类似的控件现在是ria services sdk的一部分,可以调用 Activity .

    现在,当你想做一些“同步”的事情时,你可以设置 BusyIndicator.IsBusy 属性设置为true(在SL4中,您将 Activity.IsActive 成真。然后发出一个异步请求,在请求完成时将属性设置为false。

        2
  •  0
  •   Ash    14 年前

    不管好坏,silverlight不支持对web服务的同步调用。你最好的办法是去做一些类似于anthony所建议的事情,以便在你的ui中得到想要的最终结果,而不需要真正锁定ui线程。