Как используется ключевое слово await в C#?
Answer from AI
sobes.tech AI
Ключевое слово await используется в C# для неблокирующего ожидания завершения асинхронной операции.
Применение await возможно только внутри асинхронных методов, помеченных модификатором async.
Когда выполнение достигает оператора await, поток управления возвращается вызывающей стороне, а метод "приостанавливается", пока ожидаемая задача не завершится. После завершения задачи, выполнение метода возобновляется с того места, где остановилось.
Это позволяет освободить вызывающий поток (например, поток пользовательского интерфейса или потока веб-сервера) для выполнения других задач, повышая отзывчивость и масштабируемость приложения.
public async Task<string> GetDataAsync()
{
// Имитация долговременной асинхронной операции
await Task.Delay(2000);
return "Данные получены";
}
public async Task ProcessDataAsync()
{
Console.WriteLine("Начало обработки...");
string result = await GetDataAsync(); // Ожидаем завершения GetDataAsync без блокировки
Console.WriteLine($"Результат: {result}");
Console.WriteLine("Обработка завершена.");
}
Ключевое слово await может применяться к:
- Задачам (Task, Task<T>, ValueTask, ValueTask<T>): Наиболее распространенный сценарий.
- awaitable-типам: Объектам, которые имеют метод
GetAwaiter(), возвращающий тип с методамиIsCompleted,GetResult()иOnCompleted()(для поддержки продолжения).
Использование await делает асинхронный код более читаемым и похожим на синхронный, избавляя от необходимости вручную писать код продолжения (continuation) или использовать обратные вызовы (callbacks).