Het gebruik van await in C# header image

Het gebruik van await in C#

zaterdag 28 maart 2020 ·Leestijd: 2 minuten
contacteer auteur:

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 E-commerce… Wakker worden!
Geschreven door
op dinsdag 28 juni 2022
Veel B2B-bedrijven in blijven hangen in; nauwelijks vindbare, verouderde B2B e-commerce websites met minimale conversiemogelijkheden en een betreurenswaardige gebruikerservaring. Zonde!
B2B Leadgeneratie: Alles wat je altijd al wilde weten!
Geschreven door
op maandag 27 juni 2022
B2B online leadgeneratie is het proces van het identificeren van de ideale klanten voor uw product of dienst, en hen vervolgens overhalen tot aankoop. Het is een essentiële activiteit voor B2B sales- en marketingteams.
Wat maakt een B2B webshop succesvol?
Geschreven door
op zondag 26 juni 2022
De opmars van de B2B webshop neemt toe. Regelmatig krijgen wij de vraag of er een groot verschil is tussen een consumentgerichte webshop en een puur B2B gedreven webshop. In deze blog leggen wij u uit hoe een B2B webshop succesvol kan zijn en worden.
Open Nieuwsbrief Inschrijving Footer

E-book

Zo wordt uw website een lead generator 
In 3 stappen uw website van visitekaartje naar salesfunnel

Download het E-book â€º