在RIA服务方法中进行异步调用

时间:2010-10-09 04:12:48

标签: wcf-ria-services

我有一个使用RIA服务的Silverlight 4应用程序。其中一种RIA服务方法与以下内容类似:

List<Foo> fooList = this.GetListOfFoo();
AnotherService aService = new AnotherService();
foreach (Foo foo in fooList)
{
   aService.SomeMethodCompleted += this.methodCompleted;
   aService.SomeMethodAsync(foo);
}

return fooList;

SomeMethodAsync然后对foo进行更改,这是一种引用类型。

为每个Foo调用this.methodCompleted,但Silverlight客户端看不到对Foo实例的更新。我猜测在RIA服务返回Silverlight客户端之前,没有任何内容会自动等待所有异步调用完成。

我的问题是:在返回Silverlight客户端之前,我可以协调完成异步调用吗?或者我是否仅限于在RIA服务中进行同步呼叫?

1 个答案:

答案 0 :(得分:0)

答案是:按照您对任何WCF或Web服务方法的方式进行操作。也就是说,每个调用methodCompleted的WaitHandles数组都会在返回之前调用WaitAll。或者,如果您正在进行&gt; 64次异步调用,请使用CountDownEvent,就像我可能需要的那样。

并且不要将完成的事件处理程序连接到foreach中。否则你将调用你的Completed处理程序(fooList.Count)^ 2次,这与你的CountDownEvent混淆:)