2011-02-25 17 views
1

嗨全部 我有WCF服务有OperationContract GetCustomer(); 和OperationContract GetCustomerSetting(int customerId);获取WCF方法调用synchorounsly

在silverlight m上调用Silverlight页面的OnLoad方法的GetCustomer方法。 然后在GetCustomerCompleted方法上为每个客户调用GetCustomerSetting。

如果我有10个客户ID为1,2,3 ...... 10 我如何确保GetCustomerSettingCompleted将得到synchoronously 致电客户ID 1,然后2,然后3

回答

1

没有办法使WCF呼叫同步。在你的GetCustomerCompleted()函数中,你将得到e.Result中函数的返回值(你实际上应该拥有你的Customer的ID)。

在该函数中,只需使用e.Results中的ID调用GetCustomerSettings()即可。

+0

Danbord我这样做,但我没有得到e.GetCustomerSettingCompleted serialy的结果作为客户ID 1,2和3 – PramodChoudhari 2011-02-25 12:49:20

+0

您的GetCustomer是否只返回一个客户或客户列表? – danbord 2011-02-25 13:07:13

0

如果订单非常重要,那么您应该有一种方法,将客户列表作为参数,并仅在处理完所有客户(即使客户端异步调用此操作)时才返回。

0

您可以扩展您的模型以拥有isBusy存取器。您在调用WCF时将isBusy设置为true,并在完成后将false设置为false。当你看到前一个对象的isBusy不再是真的时,你可以触发下一个。

我喜欢这样做,这样我就可以将isBusy绑定到我的视图上的操作 - 就像Telerik网格视图一样。