2009-01-29 71 views
7

我有一个服务引用(不是Web引用)在VS2008中的一个Web服务,我没有写。该引用可以工作,但只有每种方法的异步版本可供我使用。为什么我的服务引用只生成异步方法?

在“配置服务引用”对话框中,选中“生成异步操作”并将其变为灰色。首先,我想除了阻止方法之外,检查这个框还生成了异步方法。其次,我从来没有见过它变灰了。

我有写WCF和ASMX时代的Web服务的双方的经验,并从未见过此事。什么可能导致这个?

谢谢。

+0

你能告诉我们你的客户端和主机配置文件的相关部分吗? – 2009-01-29 21:40:28

回答

13

我愿意投注10票,这是因为你在Silverlight中这样做。不幸的是,我没有安装这些工具,所以我无法测试这个理论,但我确实知道Silverlight的服务调用只能是异步的。也许你正在使用Silverlight项目模板并在那里创建服务引用?在这种情况下,Visual Studio可能足够聪明以知道不生成阻塞方法。

参考:

http://msdn.microsoft.com/en-us/library/cc197937(VS.95).aspx

+0

真的好奇,看看你是否正确。如果没有别的,这是一个伟大的猜测! – 2009-01-29 22:27:06

2

Silverlight中只生成异步服务调用。但请检查此CodeProject page了。

当我开始使用Silverlight时,它首先让我感到困惑。然后我意识到我应该改变我的代码以使用异步模型。您不希望在等待服务调用返回时阻止UI线程。

3

Silverlight插件正在浏览器UI线程上运行。如果您进行了同步网络调用,则会阻塞整个浏览器UI线程。在Chrome中,这会导致无响应的选项卡,在其他浏览器(如IE)中,整个浏览器将显示锁定。

所以,通过仅支持异步网络,您不得不以异步方式编写应用程序。

相关问题