C# .NET 3.5-从WPF应用程序异步多次调用Web服务

C# .NET 3.5-从WPF应用程序异步多次调用Web服务,c#,web-services,asynchronous,C#,Web Services,Asynchronous,继我之前的问题[链接文本][1]之后,我有一个新问题 我有一个WPF应用程序,它将调用Web服务。通过按下“GO”按钮,将异步调用此web服务。返回结果可能需要30秒左右 问题是,我希望用户能够单击“GO”按钮多次,只要他们愿意,就可以发出多个请求 我不想让客户端在每次按下按钮时打开到Web服务的新连接。web服务方法非常简单: InvokeeExecutionRequest(int executionID) 此方法仅返回一个标志,指明执行请求的成功或失败 现在,如果可能的话,我真的不想在客户机

继我之前的问题[链接文本][1]之后,我有一个新问题

我有一个WPF应用程序,它将调用Web服务。通过按下“GO”按钮,将异步调用此web服务。返回结果可能需要30秒左右

问题是,我希望用户能够单击“GO”按钮多次,只要他们愿意,就可以发出多个请求

我不想让客户端在每次按下按钮时打开到Web服务的新连接。web服务方法非常简单:

InvokeeExecutionRequest(int executionID)

此方法仅返回一个标志,指明执行请求的成功或失败


现在,如果可能的话,我真的不想在客户机上对这些请求进行排队,因为服务器上已经建立了一个队列。实现这一点最优雅的方法是什么?

如果您使用WCF与web服务进行通信,则可以控制连接的打开/关闭:

  • 有一个通用WCF连接(可能是窗口范围的全局变量)
  • 每次单击Go按钮时,检查连接是否打开。如果没有打开连接,如果是,则无事可做
  • 在某个逻辑点(关闭窗口,执行一些表示无法单击Go的操作)关闭连接

  • 如果使用WCF与web服务通信,则可以控制连接的打开/关闭:

  • 有一个通用WCF连接(可能是窗口范围的全局变量)
  • 每次单击Go按钮时,检查连接是否打开。如果没有打开连接,如果是,则无事可做
  • 在某个逻辑点(关闭窗口,执行一些表示无法单击Go的操作)关闭连接

  • 最后,我只是使用BackGroundWorkers发出web服务请求。我认为我们仍然以这种方式打开多个连接,但是请求的数量并不多,我们正在考虑改变我们的体系结构,以便发送到队列处理程序的一个主请求可以启动所有其他请求


    如果我有更多的时间来解决这个问题,我认为WCF将是最好的选择

    我最终只是使用BackGroundWorkers发出web服务请求。我认为我们仍然以这种方式打开多个连接,但是请求的数量并不多,我们正在考虑改变我们的体系结构,以便发送到队列处理程序的一个主请求可以启动所有其他请求


    如果我有更多的时间来解决这个问题,我认为WCF将是最好的选择

    您到上一个问题的链接已断开您到上一个问题的链接已断开唯一的问题是我没有使用WCF,这只是一个普通的ASMX web服务。很抱歉,我的回答措辞不好,但这很好,您仍然可以使用WCF客户端来使用SOAP web服务。我会更新它,让它更清晰。唯一的问题是我没有使用WCF,只是一个普通的ASMX web服务。很抱歉,我的回答措辞不好,但没关系,你仍然可以使用WCF客户端来使用SOAP web服务。我会更新它,让它更清楚。