Sobes.tech
Junior

Hoe wordt het trefwoord await gebruikt in C#?

sobes.tech AI

Antwoord van AI

Het sleutelwoord await wordt in C# gebruikt om niet-blokkerend te wachten op de voltooiing van een asynchrone operatie.

Het gebruik van await is alleen mogelijk binnen asynchrone methoden gemarkeerd met de modifier async.

Wanneer de uitvoering de instructie await bereikt, wordt de controle teruggegeven aan de aanroeper, en de methode wordt "onderbroken" totdat de verwachte taak is voltooid. Na voltooiing wordt de uitvoering van de methode hervat vanaf de plek waar deze was gestopt.

Dit stelt je in staat om de oproepende thread (bijvoorbeeld de gebruikersinterface-thread of de webserver-thread) vrij te maken om andere taken uit te voeren, waardoor de responsiviteit en schaalbaarheid van de applicatie worden verbeterd.

public async Task<string> GetDataAsync()
{
    // Simulatie van een langdurige asynchrone operatie
    await Task.Delay(2000);
    return "Data ontvangen";
}

public async Task ProcessDataAsync()
{
    Console.WriteLine("Begin verwerking...");
    string result = await GetDataAsync(); // Wacht op voltooiing van GetDataAsync zonder te blokkeren
    Console.WriteLine($"Resultaat: {result}");
    Console.WriteLine("Verwerking voltooid.");
}

Het sleutelwoord await kan worden toegepast op:

  1. Taken (Task, Task<T>, ValueTask, ValueTask<T>): meest voorkomende scenario.
  2. awaitable-typen: objecten die een GetAwaiter()-methode hebben, die een type retourneert met de methoden IsCompleted, GetResult() en OnCompleted() (voor ondersteuning van voortzetting).

Het gebruik van await maakt asynchrone code leesbaarder en meer vergelijkbaar met synchrone code, waardoor het nodig zijn van handmatig schrijven van voortzettingscode of gebruik van callbacks wordt geëlimineerd.