Mam 3 operacje, które należy przetwarzać sekwencyjnie, są

  1. Uzyskaj informacje główne
  2. PobierzSzczegóły1
  3. PobierzSzczegóły2

Robię to za pomocą kodu jak poniżej, ale myślę, że nie jest czysty. Chcę poznać alternatywny sposób wykonywania operacji asynchronicznej w kolejności sekwencyjnej.

GetMainInformation.Completed += GetDetails1;
GetDetails1.Completed += GetDetails2;
1
Anonymous 9 czerwiec 2011, 09:17

3 odpowiedzi

Najlepsza odpowiedź

Możesz użyć IResult i Coroutines Caliburn Micro. Jak zapewnić właściwości zostały załadowane we wzorcu Silverlight ViewModel (Kontrola współbieżności?)

0
Community 23 maj 2017, 15:22

Możesz stworzyć kolejkę. Coś takiego:

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

Rozpocznij żądanie:

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

W każdej z ukończonych funkcji:

void GetMainInformationCompleted()
{
  // Store result in member variable
  requestCounter--;
  if (requestCounter == 0)
  {
    ProcessRequest();
  }
}
1
kgiannakakis 9 czerwiec 2011, 09:28

Jeśli kod musi działać w określonej kolejności i sekwencyjnie, dlaczego nie wywołać funkcji Getdetails2 przy zakończeniu funkcji GetDetails1 itd., aby zadziałała? Lub. Czy twoja usługa ma funkcję wywoływania wszystkich 3, jeśli dane są powiązane, możliwe jest posiadanie struktury danych z listami/tablicami w jej obrębie, na przykład.

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

Tam, gdzie MainInfo trafia do części klienta, szczegóły1 trafiają do zamówień, a szczegóły2 do zaznaczonych pozycji itp.

0
BugFinder 9 czerwiec 2011, 09:28