Het gebruik van await in C#

Geschreven door: op zaterdag 28 maart 2020

Leestijd: 2 minuten

Binnen applicaties kunnen soms functies voorkomen die lang nodig hebben om te voltooien. Denk bijvoorbeeld aan een call naar een API van een derde partij die veel data teruggeeft die verwerkt moet worden. Het is dan niet gebruiksvriendelijk om te wachten met uitvoeren van andere functionaliteiten totdat de call naar de API klaar is. Dit kan voor problemen zorgen, want het kan dan net lijken of je applicatie is gestopt met werken voor gebruikers van je applicatie. Hoe je dit kunt oplossen, is door het gebruik van await.

Stel, je hebt de volgende code:

In deze functie doe je eerst een call naar een API die data teruggeeft. Daarna gaat een andere functie deze data verwerken. Deze functie duurt lang aangezien het om veel data kan gaan. In de code zoals deze nu is, zal de code wachten tot de lang durende taak is afgerond voordat het de andere functies gaat uitvoeren, ook al hebben de andere functies de verwerkte data niet nodig.

Dit kun je oplossen door await te gebruiken. Met await geef je aan dat een functie uitgevoerd kan worden zonder dat de code wacht tot de functie klaar is. Wel belangrijk, met het gebruik van await wordt er geen nieuwe thread aan maar wordt gebruik gemaakt van dezelfde thread.

Met behulp van het gebruik van await kun je bovenstaande code herschrijven: 

Op deze manier zal de code niet blijven hangen op de langdurende functie maar ook nog kunnen reageren op andere input van de gebruiker. De code zal wel wachten met het uitvoeren van nieuwe functies totdat de lange taak af is.

Maar stel nu dat je code meerdere lange taken bevat, zoals onderstaand voorbeeld:

Je wilt hier dat de meerdere asynchrone taken tegelijkertijd worden verwerkt zonder dat de code wacht op een van beide taken. Dit is mogelijk door gebruik te maken van System.Threading.Tasks.Task. Door voor de verschillende functies een Task() aan te maken, zal de code de functie gaan uitvoeren en kun je door middel van await wachten tot de functie klaar is met verwerken en verdergaan met het resultaat van de lange functie. Hier een voorbeeld van hoe dat eruitziet:

Bij het aanmaken van de Task zal de code beginnen met het uitvoeren van de taak. Als de code awai tegenkomt en de functie is nog niet klaar, dan zal de code daar wachten op de functie. Zo wacht je pas op de functie als je de data die de functie teruggeeft ook echt nodig hebt.

Zie dit artikel voor meer informatie over await.


Andere blogartikelen

  • B2B SEO en Geoptimaliseerde Afbeeldingen

    Geschreven door: op woensdag 12 augustus 2020

    In een tijd waarin 27% van het koopproces van B2B kopers met eigen online research wordt doorgebracht is het essentieel om een goed vindbare website te hebben. Afbeeldingen kunnen, indien geoptimalise ...

    Bekijk het artikel »
  • Prospects zoeken B2B

    Geschreven door: op woensdag 12 augustus 2020

    Het zoeken van B2B prospects is een uitdaging voor elk bedrijf. Met name kwalitatieve B2B prospects.Door vooraf onderzoek te doen naar bedrijven die voldoen aan je criteria en je marketing hierop aan ...

    Bekijk het artikel »
  • Succesvolle B2B Marketing met deze 5 Tools

    Geschreven door: op woensdag 12 augustus 2020

    Zoals mooi gevisualiseerd in het filmpje ‘The Man in the Chair’. De fundamenten onder marketing veranderen niet, de technologieën en bijbehorende tools wel. Lees hier 5 tools die wij inzetten om B2B M ...

    Bekijk het artikel »
Bel 072 5345 888
Meer dan 40 bedrijven vertrouwen op ons
Allrig is de alles in een leverancier binnen de energie-industrie
AOC is een toonaangevend wereldwijd bedrijf actief in de verkoop van kwaliteitsharsen
ERIKS is een toonaangevende en innovatieve leverancier aan de procesindustrie en aan machinebouwers, die zowel de rol van specialist als die van brede MRO-leverancier vervult
Industrieel dienstverlener Heinen & Hopman Engineering uit Bunschoten is dé wereldwijde specialist op het gebied van klimaatbeheersing
Handicare is een internationale organisatie die ouderen helpt om hun dagelijks leven gemakkelijker te maken door het produceren van hoogwaardige trapliften
Op de hoogte blijven?

Meld u aan voor de gratis nieuwsbrief om op de hoogte te blijven van onze activiteiten