
Async/await & Patterns
async/await, Task, ValueTask, ConfigureAwait, Cancellation Tokens, parallele Ausführung, Deadlocks
1Welche Hauptrolle hat das Schlüsselwort 'await' in einer asynchronen Methode?
Welche Hauptrolle hat das Schlüsselwort 'await' in einer asynchronen Methode?
Antwort
Das await-Schlüsselwort unterbricht die Ausführung der asynchronen Methode, bis die Task abgeschlossen ist, und gibt dabei den aufrufenden Thread frei, sodass er andere Aufgaben verarbeiten kann. Dies vermeidet das Blockieren des Threads und verbessert die Skalierbarkeit der Anwendung. Im Gegensatz zu Task.Wait() oder Task.Result, die den Thread blockieren, ermöglicht await eine effiziente Nutzung der Thread-Pool-Ressourcen.
2Warum sollte async void außer für Event-Handler vermieden werden?
Warum sollte async void außer für Event-Handler vermieden werden?
Antwort
Async-void-Methoden können nicht awaited werden und innerhalb geworfene Exceptions können vom aufrufenden Code nicht abgefangen werden, was zu Anwendungsabstürzen führt. Außerdem ist das Unit-Testen von async-void-Methoden unmöglich, da es keine Task zum Awaiten gibt. Event-Handler sind die Ausnahme, da sie vom Framework aufgerufen werden und keine Task zurückgeben können.
3In welchem Anwendungsfall sollte ValueTask<T> gegenüber Task<T> bevorzugt werden?
In welchem Anwendungsfall sollte ValueTask<T> gegenüber Task<T> bevorzugt werden?
Antwort
ValueTask ist ein Value Type, der die Heap-Allokation vermeidet, wenn das Ergebnis bereits synchron verfügbar ist, etwa in einem Cache. Dies reduziert den Druck auf den Garbage Collector in Hochleistungsszenarien. Task wird immer auf dem Heap allokiert, selbst wenn das Ergebnis synchron ist. Verwenden Sie ValueTask nur, wenn die Leistungsgewinne messbar sind, da eine falsche Verwendung die Leistung verschlechtern kann.
Welche wichtige Einschränkung gilt für ValueTask<T> im Vergleich zu Task<T>?
Was ist der Hauptzweck von ConfigureAwait(false) in einer .NET-Bibliothek?
+23 Interview-Fragen
Weitere .NET-Interviewthemen
C#-Grundlagen
LINQ & Delegates
C#-Sprachgrundlagen
ASP.NET Core Grundlagen
ASP.NET Core Request-Lebenszyklus
Configuration & Settings
Anwendungslebenszyklus
Dependency Injection
Entity Framework Core
Minimal APIs
Web-API-Entwicklung
Async in ASP.NET Core
Authentication & Authorization
HttpClient & Networking
JSON-Serialisierung
Entity Framework Core fortgeschritten
Erweiterte C#-Funktionen
Clean Architecture
Logging, Monitoring & Observability
Unit-Tests & xUnit
Integrationstests
Docker & Containerization
NuGet Package Management
Memory Management & GC
Reaktive Programmierung
.NET Design Patterns
Performance-Optimierung
Sicherheit & Best Practices
SignalR & Echtzeit
Microservices-Architektur
Meistere .NET für dein nächstes Interview
Zugang zu allen Fragen, Flashcards, technischen Tests, Code-Review-Übungen und Interview-Simulatoren.
Kostenlos starten