3

我有一个 C# 桌面应用程序,我毫无问题地使用了一个 Web 服务(由“添加服务引用”添加的 wsdl,所以我创建了一个对象并调用它的函数)。

现在,我想使用长轮询技术,但从客户的角度来看,我不知道如何做到这一点。

如何配置超时?我应该使用专门用于此的线程吗?有 C# 桌面应用程序的示例吗?(还没有找到)

谢谢,大坝的

4

2 回答 2

4

您应该能够在 Web 服务对象上配置超时 - 详细信息将完全取决于它使用的类,但请查看WebClientProtocol.Timeout示例。

现在,您可以从专用线程同步调用它,也可以对 Web 服务进行异步调用以开始,指定在服务响应时执行的回调(可能在线程池线程上)。在这种情况下,您可能会发现您可以指定异步调用本身的超时时间——同样,这将取决于您所拥有的 Web 服务代理类的类型。

这样你就不需要“浪费”一个线程来等待响应——但你可能会发现异步编程模型比同步模型更难理解。如果您在任何时候只收到一两个这样的请求,那么额外的几个线程不太可能成为问题。如果您正在等待来自 500 种不同服务的响应,那就另当别论了,异步模型肯定是要走的路。

于 2009-10-07T10:06:08.897 回答
1

对于线程问题,请参阅 Jon 的回答。

对于超时问题,解决方案如下:在 vs 2008 中,当我从 wsdl 添加“服务引用”时,默认情况下它将使用 WCF,我找不到如何设置超时值。

因此,当右键单击服务参考时,我必须选择“网络参考”(高级/添加网络参考)。这样,它将仅使用“普通”Web 服务,并且 Timeout 参数可用。

于 2009-10-07T18:24:26.480 回答