2013-09-25 68 views
0

我正在处理可能需要几秒到几分钟才能完成的Web服务调用。它构建所请求的数据并将其返回。现在,对于WS的长时间调用,用户界面(WinForms)变得无法响应;用户无法取消操作。如何中断长时间运行的Web服务调用

解决这个问题(我认为)的理想方法是将操作分成两个Web服务调用:第一个请求,第二个请求获取状态或可用数据。

但是,如果Web服务结构不能改变,那么中断Web服务调用的最好方法是什么?

UPDATE:

的WS调用可以异步的。如果用户想取消操作,那么我想解除未完成工作的服务器(而不是让线程正常完成并丢弃响应)。 Thread.Abort()是一种可能性,但我想知道是否有更好的方法。

我正在使用的Web服务是基于WCF的。操作是只读的,所以如果中断,没有任何事情可以撤消。

+3

为什么不只是做Web服务调用异步? – EkoostikMartin

+0

如果您已经将WS的引用添加为'Add ServiceReference''WsClient',那么您的客户端将拥有一个返回任务的'xxxAsync'方法。你可以很容易'等待' –

+0

所以如果我异步运行WS调用是我唯一的选择来中断它[Thread.Abort](http://stackoverflow.com/questions/2251964/c-sharp-thread-termination-和线程中止)? – jltrem

回答

相关问题