.NET

Async/await & Patterns

async/await, Task, ValueTask, ConfigureAwait, cancellation tokens, parallelle uitvoering, deadlocks

26 gespreksvragen·
Senior
1

Wat is de belangrijkste rol van het sleutelwoord 'await' in een asynchrone methode?

Antwoord

Het sleutelwoord await onderbreekt de uitvoering van de asynchrone methode totdat de Task is voltooid, terwijl het de aanroepende thread vrijgeeft zodat deze andere taken kan verwerken. Dit voorkomt het blokkeren van de thread en verbetert de schaalbaarheid van de applicatie. In tegenstelling tot Task.Wait() of Task.Result, die de thread blokkeren, maakt await efficiënt gebruik van thread pool-resources mogelijk.

2

Waarom moet async void worden vermeden behalve voor event handlers?

Antwoord

Async void-methoden kunnen niet worden awaited en exceptions die binnenin worden geworpen, kunnen niet door de aanroepende code worden opgevangen, wat applicatiecrashes veroorzaakt. Bovendien is het unit-testen van async void-methoden onmogelijk omdat er geen Task is om te awaiten. Event handlers vormen de uitzondering omdat ze door het framework worden aangeroepen en geen Task kunnen retourneren.

3

In welk gebruiksscenario verdient ValueTask<T> de voorkeur boven Task<T>?

Antwoord

ValueTask is een value type dat heap-allocatie vermijdt wanneer het resultaat al synchroon beschikbaar is, zoals in een cache. Dit vermindert de druk op de garbage collector in scenario's met hoge prestaties. Task wordt altijd op de heap gealloceerd, zelfs als het resultaat synchroon is. Gebruik ValueTask alleen wanneer prestatiewinst meetbaar is, omdat onjuist gebruik de prestaties kan verslechteren.

4

Welke belangrijke beperking geldt voor ValueTask<T> in vergelijking met Task<T>?

5

Wat is het belangrijkste doel van ConfigureAwait(false) in een .NET-bibliotheek?

+23 gespreksvragen

Beheers .NET voor je volgende gesprek

Krijg toegang tot alle vragen, flashcards, technische tests, code review-oefeningen en gespreksimulatoren.

Begin gratis