
Async/await & Patterns
async/await, Task, ValueTask, ConfigureAwait, cancellation tokens, parallelle uitvoering, deadlocks
1Wat is de belangrijkste rol van het sleutelwoord 'await' in een asynchrone methode?
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.
2Waarom moet async void worden vermeden behalve voor event handlers?
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.
3In welk gebruiksscenario verdient ValueTask<T> de voorkeur boven Task<T>?
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.
Welke belangrijke beperking geldt voor ValueTask<T> in vergelijking met Task<T>?
Wat is het belangrijkste doel van ConfigureAwait(false) in een .NET-bibliotheek?
+23 gespreksvragen
Andere .NET-sollicitatieonderwerpen
C#-basisbeginselen
LINQ & Delegates
Essentials van de C#-taal
ASP.NET Core-grondbeginselen
Levenscyclus van requests in ASP.NET Core
Configuration & Settings
Levenscyclus van de applicatie
Dependency Injection
Entity Framework Core
Minimal APIs
Web API-ontwikkeling
Async in ASP.NET Core
Authentication & Authorization
HttpClient & Networking
JSON-serialisatie
Entity Framework Core gevorderd
Geavanceerde C#-functies
Clean Architecture
Logging, Monitoring & Observability
Unit Testing & xUnit
Integratietests
Docker & Containerization
NuGet-pakketbeheer
Memory Management & GC
Reactief programmeren
.NET Design Patterns
Prestatieoptimalisatie
Beveiliging & Best Practices
SignalR & realtime
Microservices-architectuur
Beheers .NET voor je volgende gesprek
Krijg toegang tot alle vragen, flashcards, technische tests, code review-oefeningen en gespreksimulatoren.
Begin gratis