2011-02-25 19 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網格視圖一樣。