我正在处理一个可能需要几秒钟到几分钟才能完成的网络服务调用。它构造请求的数据并返回它。现在,对于长时间运行的 WS 调用,用户界面(WinForms)变得无响应;用户无法取消操作。
解决这个问题的理想方法(我认为)是将操作分解为两个 Web 服务调用:第一个是请求,第二个是获取状态或可用数据。
但是如果 web-service 结构不能改变,那么中断 web-service 调用的最佳方法是什么?
更新:
WS 调用可以异步进行。如果用户想取消操作,那么我想解除服务器未完成的工作(而不是让线程正常完成并丢弃响应)。 Thread.Abort()
有可能,但我想知道是否有更好的方法。
我正在使用的 Web 服务是基于 WCF 的。这些操作是只读的,因此如果被中断,就没有什么可以撤消的。