繁体   English   中英

如何在C#中建立长轮询客户端?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM