我有一个C#桌面应用程序,我使用Web服务没有问题(wsdl添加了“添加服务引用”,因此我创建了一个对象并调用其功能)。
现在,我想使用长轮询技术,但从客户的角度来看,我无法想象如何做到这一点。
如何配置超时? 我应该使用专用的线程吗? C#桌面应用程序有什么示例吗? (还没找到)
谢谢, 坝的
答案 0 :(得分:4)
您应该能够在Web服务对象上配置超时 - 详细信息将取决于它正在使用哪个类,但请查看WebClientProtocol.Timeout
示例。
现在您可以从专用线程同步调用它,或者您可以对Web服务进行异步调用,指定要执行的回调(可能在线程池线程上)当服务回复时。在这种情况下,您可能会发现可以在异步调用本身上指定超时 - 再次,它将取决于您所拥有的Web服务代理类的确切类型。
这样你就不需要“浪费”一个等待响应的线程 - 但你可能会发现异步编程模型比同步编程模型更难理解。如果您在任何时候只有一个或两个这样的请求,那么额外的几个线程就不太可能成为问题。如果您正在等待来自500种不同服务的响应,那么这是另一回事,异步模型绝对是您的选择。
答案 1 :(得分:1)
有关线程问题,请参阅Jon的回答。
对于超时问题,这是解决方案: 在vs 2008中,当我从wsdl添加“服务引用”时,它默认使用WCF,我找不到如何用它设置超时值。
因此,当右键单击服务引用时,我必须选择“Web引用”(高级/添加Web引用)。这样,它将只使用“普通”Web服务,并且Timeout参数可用。