如何做到在C#中的长轮询客户端?
-
20-09-2019 - |
题
我有一个C#桌面应用程序,并予消耗的web服务没有问题(用“添加服务引用”添加WSDL,所以创建一个对象,并调用它的函数)。
现在,我要使用长轮询技术,但我想不出如何从客户的角度来看,做到这一点。
如何配置超时? 我应该使用专门为这一主题? 是否有一个C#桌面应用程序的任何例子吗? (还没有发现任何)
谢谢, 坝的
解决方案
您应该能够配置Web服务对象的超时 - 细节将取决于正是它的使用哪一类,但看的为例WebClientProtocol.Timeout
。
现在你既可以同步调用,从一个专门的线程,或者你可以做一个的异步的调用Web服务一起启动,指定一个回调来执行(可能在一个线程池线程)当服务回复。在这种情况下,你会发现你可以在异步调用本身指定超时 - 再次,这将取决于到底是什么样的,你已经有了Web服务代理类的
。这样,你并不需要“浪费”只是在等待响应线程 - 但你可能会发现,异步编程模型是难度比同步一个了解。如果你只有一个或两个这些请求在任何一个时间的,额外的情侣线程不太可能是一个问题。如果你正在等待来自500个不同的服务响应,这是一个不同的问题和异步模式肯定是要走的道路。
其他提示
有关线程问题,请参阅Jon的回答。
有关的超时问题,这里的溶液: 在VS 2008中,当我从WSDL添加一个“服务引用”,它将使用WCF默认情况下,我无法找到如何设置超时值吧。
所以,当服务引用右击,我要选择“Web引用”(高级/添加Web引用)。这样一来,就只用“正常”的Web服务和超时参数是可用的。
不隶属于 StackOverflow