2011-01-10 65 views
0

我正在为WebService创建一个客户端,并且WebService的一个方法是上传方法。对此方法的调用在BackgroundWorker中完成,并出现一个对话框ProgressBar。 但我希望用户能够中止文件的上传。 我试图调用Abort()方法。当调用Abort时,WS上传调用中的BackgroundWorker上启动了一个异常,正如预期的那样。问题在于服务器完成调用并将文件添加到数据库的大部分时间。我可以取消对WebService的同步调用吗?

是否有另一种方法来中止WS调用?

+0

如何上传文件?你传递给那个方法的是什么论点? – dzendras 2011-01-10 12:20:34

+0

该文件的内容是一个字节[]。 – jpsstavares 2011-01-10 17:50:31

回答

2

一旦发出请求,就无法告诉客户端将在哪个阶段调用中止 - 所以很可能请求已到达服务器并且服务器已在处理该请求。所以即使你可以从客户端中止,服务器已经处理了请求。这同样适用于异步Web请求。完整的证明解决方案是补偿事务,即在这种情况下,中止应该调用服务器来删除文件(如果文件不存在,服务器不应该引发错误)。

0

VinayC是正确的,一旦服务启动,服务器进程接管。如果你正在批量发起请求或者有一些可以中断的循环,那么你可以创建另一个服务调用来取消初始请求。取消请求只是设置一些在启动请求中被检查的变量。

但是你也想做一个由VinayC提到的完整证明解决方案,因为取消请求可能不会在服务器端发起请求完成之后进入。

相关问题