Kuidas kasutatakse võtmesõna await C#-s?
sobes.tech AI
Vastus AI-lt
Võtmesõna await kasutatakse C#-s asünkroonse operatsiooni mitte-blokeerivaks ootamiseks.
await kasutamine on võimalik ainult asünkroonsetes meetodites, mis on märgitud async modifikaatoriga.
Kui täitmine jõuab await käsuni, tagastatakse juhtimisvoog kutsuja poole ning meetod "peatub" kuni oodatav ülesanne lõpetatakse. Pärast ülesande lõpetamist jätkub täitmine sealt, kus see jäi.
See võimaldab vabastada kutsuva niidi (näiteks kasutajaliidese niidi või veebiserveri niidi), et teostada teisi ülesandeid, parandades rakenduse reageerimisvõimet ja skaleeritavust.
public async Task<string> GetDataAsync()
{
// Pikaajalise asünkroonse operatsiooni simulatsioon
await Task.Delay(2000);
return "Andmed on saadud";
}
public async Task ProcessDataAsync()
{
Console.WriteLine("Alustame töötlemist...");
string result = await GetDataAsync(); // Ootame GetDataAsync lõpetamist ilma blokeerimata
Console.WriteLine($"Tulemus: {result}");
Console.WriteLine("Töötlemine lõpetatud.");
}
Võtmesõna await saab kasutada:
- Ülesannete (Task, Task<T>, ValueTask, ValueTask<T>): Kõige levinum stsenaarium.
- Ootavate tüüpide: Objektid, millel on meetod
GetAwaiter(), mis tagastab tüübi koos meetoditegaIsCompleted,GetResult()jaOnCompleted()(toetuse jaoks jätkamise jaoks).
await kasutamine muudab asünkroonse koodi loetavamaks ja sarnasemaks sünkroneerilisele, vabastades vajadusest kirjutada jätkamiskoodi või kasutada tagasikutsumisi (callbacks).