[英]How to do a long polling client in C#?
我有一个C#桌面应用程序,我使用Web服务没有问题(wsdl添加“添加服务引用”,所以我创建一个对象并调用其功能)。
现在,我想使用长轮询技术,但从客户的角度来看,我无法想象如何做到这一点。
如何配置超时? 我应该使用专用的线程吗? C#桌面应用程序有什么示例吗? (还没找到)
谢谢,大坝的
您应该能够在Web服务对象上配置超时 - 详细信息将取决于它正在使用的确切类,但请查看WebClientProtocol.Timeout
以获取示例。
现在,您可以从专用线程同步调用它,或者您可以对Web服务进行异步调用,指定在服务回复时要执行的回调(可能在线程池线程上)。 在这种情况下,您可能会发现可以在异步调用本身上指定超时 - 再次,它将取决于您所拥有的Web服务代理类的确切类型。
这样你就不需要“浪费”一个等待响应的线程 - 但你可能会发现异步编程模型比同步编程模型更难理解。 如果您在任何时候只有一个或两个这样的请求,那么额外的几个线程就不太可能成为问题。 如果您正在等待来自500种不同服务的响应,那么这是另一回事,异步模型肯定是要走的路。
有关线程问题,请参阅Jon的回答。
对于超时问题,这里是解决方案:在vs 2008中,当我从wsdl添加“服务引用”时,它默认使用WCF,我找不到如何用它设置超时值。
因此,当右键单击服务引用时,我必须选择“Web引用”(高级/添加Web引用)。 这样,它将只使用“普通”Web服务,并且Timeout参数可用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.