Jak działa asynchroniczna metoda w C#?
sobes.tech AI
Odpowiedź od AI
Metoda asynchroniczna w C# pozwala na wykonywanie operacji, które mogą zająć dużo czasu (np. wejście/wyjście, żądania sieciowe), bez blokowania głównego wątku wykonawczego.
Wywołując metodę asynchroniczną oznaczoną słowem kluczowym async, kontrola jest przekazywana do kodu wywołującego aż do zakończenia operacji asynchronicznej. Operacja ta jest wykonywana w tle (np. przy użyciu puli wątków lub mechanizmów wejścia/wyjścia systemu).
Słowo kluczowe await wewnątrz metody asynchronicznej wskazuje miejsce, w którym operacja asynchroniczna może zostać zawieszona. Gdy wykonanie osiąga await, kontrola jest zwracana do kodu wywołującego, a kontynuacja metody jest planowana do wykonania, gdy oczekiwana operacja się zakończy.
Wynik operacji asynchronicznej (lub wyjątek) jest następnie przekazywany z powrotem do kontynuacji metody asynchronicznej, gdzie jest przetwarzany. Stan metody asynchronicznej jest automatycznie zarządzany przez kompilator C#, który przekształca ją w automat skończony.
public async Task<string> GetDataAsync(string url)
{
// Symulacja długotrwałej operacji wejścia/wyjścia
using (var httpClient = new HttpClient())
{
string result = await httpClient.GetStringAsync(url); // await: wykonanie metody może zostać zawieszone
return result;
}
}
// Przykład wywołania metody asynchronicznej
public async Task ProcessDataAsync(string url)
{
Console.WriteLine("Rozpoczęcie ładowania danych...");
string data = await GetDataAsync(url); // Oczekiwanie na zakończenie operacji asynchronicznej
Console.WriteLine("Dane załadowane: " + data.Length + " znaków.");
}