如何判断一组Web服务调用是否已完成?

时间:2012-02-08 14:37:47

标签: c# .net wpf silverlight web-services

我正在使用silverlight并且正在调用一组soap webservice调用,并且在我知道所有操作完成后想要执行操作。

所以,我有3个不同的电话。我在循环中进行10次异步调用并等待它们返回。我如何知道何时完成10个中的一个?自从我使用线程以来已经很长时间了。

2 个答案:

答案 0 :(得分:1)

每次通话都会向客户返回一个事件,表明已完成。一个简单而基本的方法是只为每个调用增加一个包变量,然后当你知道所有调用都已完成时,这个值为10。

更强大的机制是在每个请求之前增加调用次数,然后在请求完成时减少它。当计数器返回零时,您知道所有请求都已完成。

需要注意确保对此变量的访问是线程安全的。

答案 1 :(得分:0)

您可以使用BackgroundWorker启动所有Web服务调用并传入WaitHandleManualResetEvent并创建其中的数组。然后使用WaitHandle.WaitAll方法。在每次回调中,您将设置WaitHandle。然后在后台工作程序中它将阻塞(因为WaitAll),直到所有等待句柄都被设置。