Code:
Przeanalizujmy w jaki sposób wykonywana jest powyższa metoda:
- Następuje wywołanie metody GetDataLengthAsync - np z wywołania zdarzenia Click przycisku
- Zostaje utworzony obiekt klasy HttpClient i wywołana na nim metoda GetStringAsync
- Metoda GetStringAsync jest metodą blokującą - musi oczekiwać na odpowiedź serwera w celu pobrania kodu źródłowego strony. Metoda ta zwraca w rezultacie Task<string>, który jest następnie przypisywany do zmiennej taskResult.
- Ponieważ nie potrzebujemy na ten moment rezultatu ze zmiennej taskResult, kod jest wykonywany dalej i zostaje wywołana asynchroniczna metoda DoSomeStaff(). Metoda ta po wykonaniu powraca do metoday GetDataLengthAsync.
- Przechodzimy do sedna metody: metoda chce zwrócić długość łańcucha kodu źródłowego strony. Aby to zrobić, musi otrzymać łańcuch z metody GetStringAsync. Słowo kluczowe await mówi: teraz się zatrzymaj i czekaj na wynik zadania taskResult.
- GetStringAsync zwraca rezultat - pamiętajmy, że nie jest to string, a Task<string>. Operator await niejako "wyciąga" rezultat i przypisuje go do zmiennej odpowiedniego typu tj string.
- Następuje obliczenie długości i zwrócenie jej do zdarzenia, które wywołało metodę GetDataLengthAsync
Tak wygląda przebieg metody asynchronicznej w nowym .NET. Warto przeanalizować kilka przykładów, aby lepiej zrozumieć cały mechanizm.
Brak komentarzy:
Prześlij komentarz