Sobes.tech
Middle

Jak działają słowa kluczowe async i operator await w C#?

sobes.tech AI

Odpowiedź od AI

async oznacza, że metoda jest asynchroniczna, co pozwala na użycie await w jej wnętrzu. To nie czyni samej metody asynchroniczną, ale pozwala kompilatorowi wygenerować automat stanu, który będzie zarządzał wykonaniem.

await jest używane przed wyrażeniem zwracającym Task lub Task<T>. Wstrzymuje wykonanie bieżącej metody async do czasu zakończenia oczekiwanej zadania, nie blokując wątku wykonawczego. Po zakończeniu zadania, wykonanie metody kontynuuje się od miejsca po await. Jeśli zadanie zwraca wynik (Task<T>), await zwraca ten wynik.

public async Task<int> GetDataAsync()
{
    // Asynchroniczna operacja
    HttpClient client = new HttpClient();
    string result = await client.GetStringAsync("http://example.com"); 

    // Kontynuacja po zakończeniu GetStringAsync
    // Przetwarzanie wyniku
    return result.Length; 
}