C# 如何中断长时间运行的Web服务调用
我正在处理一个web服务调用,它可能需要几秒钟到几分钟才能完成。它构造并返回请求的数据。现在,对于长时间运行的WS调用,用户界面(WinForms)变得没有响应;用户无法取消该操作 解决这个问题的理想方法(我认为)是将操作分成两个web服务调用:第一个是请求,第二个是获取状态或可用数据 但是如果web服务结构无法更改,那么中断web服务调用的最佳方法是什么 更新: WS调用可以异步进行。如果用户想要取消操作,那么我希望减轻服务器未完成的工作(而不是让线程正常完成并丢弃响应)C# 如何中断长时间运行的Web服务调用,c#,web-services,C#,Web Services,我正在处理一个web服务调用,它可能需要几秒钟到几分钟才能完成。它构造并返回请求的数据。现在,对于长时间运行的WS调用,用户界面(WinForms)变得没有响应;用户无法取消该操作 解决这个问题的理想方法(我认为)是将操作分成两个web服务调用:第一个是请求,第二个是获取状态或可用数据 但是如果web服务结构无法更改,那么中断web服务调用的最佳方法是什么 更新: WS调用可以异步进行。如果用户想要取消操作,那么我希望减轻服务器未完成的工作(而不是让线程正常完成并丢弃响应)Thread.Abor
Thread.Abort()是一种可能性,但我想知道是否有更好的方法
我使用的web服务是基于WCF的。这些操作是只读的,因此如果被中断,没有什么可以撤消的。您可以生成异步代理类来实现此功能
请查看以下链接以获取示例
为什么不异步调用web服务呢?如果您将引用添加到WS-asAddServiceReference
WsClient
中,您的客户端将有一个xxxAsync
方法返回任务。您可以轻松地wait
。如果异步运行WS-call,这是我唯一可以中断它的选项吗?为什么您需要中断它?只需设置一个执行超时。@EkoostikMartin我用“为什么”更新了这个问题。由于中断是用户调用的,我认为执行超时是不可能的。