Mam 3 operacje, które należy przetwarzać sekwencyjnie, są
- Uzyskaj informacje główne
- PobierzSzczegóły1
- 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;
3 odpowiedzi
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?)
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();
}
}
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.
Podobne pytania
Powiązane pytania
Nowe pytania
silverlight
Silverlight to działająca w różnych przeglądarkach, wieloplatformowa wtyczka firmy Microsoft do obsługi multimediów i bogatych aplikacji interaktywnych.