Получить вызов метода WCF синхронно - PullRequest
1 голос
/ 25 февраля 2011

Привет всем, у меня есть служба WCF, в которой есть OperationContract GetCustomer ();и OperationContract GetCustomerSetting (int customerId);

В Silverlight можно вызвать метод GetCustomer для метода OnLoad на странице silverlight.и затем вызов GetCustomerSetting для каждого клиента по методу GetCustomerCompleted.

если у меня 10 клиентов с Id 1,2,3 ... 10, как мне убедиться, что GetCustomerSettingCompleted получит вызов синхронно для идентификатора клиента 1, затем 2а затем 3.

Ответы [ 4 ]

1 голос
/ 25 февраля 2011

Невозможно сделать вызов WCF синхронно. В вашей функции GetCustomerCompleted () вы получите возвращаемое значение функции в e.Result (где у вас должен быть фактически идентификатор вашего клиента).

В этой функции просто вызовите GetCustomerSettings () с идентификатором в e.Results.

0 голосов
/ 25 февраля 2011

Вы можете расширить свою модель, чтобы иметь аксессор isBusy. Вы установили бы isBusy в true, когда вызываете WCF, и в false после завершения. Когда вы видите, что isBusy предыдущего объекта больше не имеет значения true, вы можете запустить следующий.

Мне нравится делать это таким образом, чтобы я мог связать isBusy с действием на моем представлении - например, с сеткой Telerik.

0 голосов
/ 25 февраля 2011

Если заказ так важен, у вас должен быть метод, который принимает список клиентов в качестве параметра и возвращает его только тогда, когда все клиенты обрабатываются (даже если клиент вызывает эту операцию асинхронно).

0 голосов
/ 25 февраля 2011

смотрите здесь Последовательные асинхронные рабочие процессы в Silverlight с использованием сопрограмм и здесь Последовательные асинхронные рабочие процессы Часть 2: Упрощенная . Это (на мой взгляд) хороший способ синхронизировать несколько асинхронных вызовов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...