我在VS2008中有一个服务引用(不是Web引用)到我没写的Web服务。参考有效,但我只能使用每种方法的异步版本。
在“配置服务引用”对话框中,选中“生成异步操作”并显示为灰色。首先,我认为除了阻止方法之外,检查此框还会生成异步方法。其次,我以前从未见过它变灰了。
我有编写WCF和ASMX时代Web服务两方面的经验,之前从未见过这个。可能导致这种情况的原因是什么?
感谢。
答案 0 :(得分:13)
我愿意下注10票,因为你在Silverlight中这样做了。不幸的是我没有安装工具,所以我无法测试这个理论,但我知道来自Silverlight的服务调用只能是异步的。也许您正在使用Silverlight项目模板并在那里创建服务引用? Visual Studio可能足够聪明,知道在这种情况下不会生成阻塞方法。
供参考:
http://msdn.microsoft.com/en-us/library/cc197937(VS.95).aspx
答案 1 :(得分:3)
Silverlight插件正在Browsers UI线程上运行。如果您进行了同步网络调用,则会阻止整个浏览器UI线程。在Chrome中,这会导致无响应标签,在IE等其他浏览器中,整个浏览器都会显示为已锁定。
因此,只支持异步网络,您将被迫以异步方式编写应用程序。
答案 2 :(得分:2)
Silverlight仅生成异步服务调用。但请查看此CodeProject page。
当我开始使用Silverlight时,它首先引起了我的注意。然后我意识到我应该更改我的代码以使用异步模型。在等待服务调用返回时,您不希望阻止UI线程。