Последовательная операция Silverlight для асинхронной работы - PullRequest
1 голос
/ 09 июня 2011

У меня есть 3 операции, которые нужно обрабатывать последовательно, они

  1. GetMainInformation
  2. GetDetails1
  3. GetDetails2

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

GetMainInformation.Completed += GetDetails1;
GetDetails1.Completed += GetDetails2;

Ответы [ 3 ]

1 голос
/ 09 июня 2011

Вы можете создать очередь. Примерно так:

GetMainInformation.Completed += GetMainInformationCompleted
GetDetails1.Completed += GetDetails1Completed
GetDetails2.Completed += GetDetails2Completed

Запустить запрос:

requestCounter = 3;
GetMainInformationAsync();
GetDetails1();
GetDetails2();

В каждой из выполненных функций:

void GetMainInformationCompleted()
{
  // Store result in member variable
  requestCounter--;
  if (requestCounter == 0)
  {
    ProcessRequest();
  }
}
0 голосов
/ 09 июня 2011
0 голосов
/ 09 июня 2011

Если код должен выполняться в определенном порядке и последовательно, почему бы не иметь Getdetails2, вызываемый при завершении GetDetails1, и т. Д., Чтобы он работал? Или же. У вашей службы должна быть функция для вызова всех 3, если данные связаны, возможно, возможно иметь структуру данных со списками / массивами внутри нее, например.

   String CustomerName, 
String Address, 
String PhoneNumber, 
List<orders> Orders, 
List<itemsMarked> ItemsMarked

Если MainInfo отправляется клиенту, детали1 переходят в заказы, а детали2 - в маркированные позиции и т. Д.

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