Sobes.tech
Middle

Как работи асинхронният метод в C#?

sobes.tech AI

Отговор от AI

Асинхронният метод в C# позволява изпълнението на операции, които могат да отнемат продължително време (например вход/изход, мрежови заявки), без да блокира основния поток за изпълнение.

Когато се извика асинхронен метод, маркиран с ключовата дума async, управлението се прехвърля към кода, който го е извикал, докато асинхронната операция не приключи. Операцията се изпълнява на заден план (например, чрез използване на пул от нишки или системни механизми за вход/изход).

Ключовата дума await вътре в асинхронния метод указва мястото, където операцията може да бъде спряна. Когато изпълнението достигне await, управлението се връща към извикващия код, а продължението на метода се планира да се изпълни, когато очакваната операция приключи.

Резултатът от асинхронната операция (или изключение) се връща обратно към продължението на асинхронния метод, където се обработва. Състоянието на асинхронния метод се управлява автоматично от компилатора на C#, който го преобразува в краен автомат.

public async Task<string> GetDataAsync(string url)
{
    // Имитиране на продължителна операция за вход/изход
    using (var httpClient = new HttpClient())
    {
        string result = await httpClient.GetStringAsync(url); // await: изпълнението на метода може да бъде спряно
        return result;
    }
}

// Пример за извикване на асинхронен метод
public async Task ProcessDataAsync(string url)
{
    Console.WriteLine("Започване на зареждане на данни...");
    string data = await GetDataAsync(url); // Изчакване за завършване на асинхронната операция
    Console.WriteLine("Данните са заредени: " + data.Length + " символа.");
}