我有一个 C# 桌面应用程序,我可以毫无问题地使用 Web 服务(通过“添加服务引用”添加 wsdl,因此我创建了一个对象并调用了它的函数)。
现在,我想使用长轮询技术,但我不知道如何从客户端的角度执行此操作。
如何配置超时? 我应该使用专用于此的线程吗? 是否有 C# 桌面应用程序的示例? (还没找到)
谢谢, 大坝的
最佳答案
您应该能够在 Web 服务对象上配置超时 - 详细信息将取决于它使用的具体类,但请查看 WebClientProtocol.Timeout
举个例子。
现在您可以从专用线程同步调用它,或者您可以对网络服务进行异步调用以开始,指定要执行的回调(可能在线程池线程上) 当服务回复时。在这种情况下,您可能会发现您可以在异步调用本身上指定超时 - 同样,这将取决于您所拥有的 Web 服务代理类的确切类型。
这样您就不需要“浪费”一个线程来等待响应——但是您可能会发现异步编程模型比同步模型更难理解。如果您在任何时候只收到这些请求中的一两个,那么额外的几个线程不太可能成为问题。如果您正在等待来自 500 个不同服务的响应,那就另当别论了,异步模型绝对是最佳选择。
关于c# - 如何在 C# 中实现长轮询客户端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1530572/