Sobes.tech
Middle
132
questionbank

Как работает ключевое слово async и оператор await в C#?

Answer from AI

sobes.tech AI

async помечает метод как асинхронный, позволяя использовать в нем await. Это не делает сам метод асинхронным, но позволяет компилятору генерировать конечный автомат, который будет управлять выполнением.

await используется перед выражением, возвращающим Task или Task<T>. Оно приостанавливает выполнение текущего метода async до завершения ожидаемой задачи, не блокируя при этом поток выполнения. После завершения задачи, выполнение метода продолжается с точки после await. Если задача возвращает результат (Task<T>), то await возвращает этот результат.

public async Task<int> GetDataAsync()
{
    // Асинхронная операция
    HttpClient client = new HttpClient();
    string result = await client.GetStringAsync("http://example.com"); 

    // Выполнение продолжается после завершения GetStringAsync
    // Обработка результата
    return result.Length; 
}