Чӣ гуна калиди await дар C# истифода мешавад?
sobes.tech AI
Ҷавоб аз 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 робіць асінхронны код больш чытэльным і падобным на сінхронны, выдаляючы неабходнасць ручнога пісьма кода працягнення або выкарыстання callback-аў.