Session
A deep-dive into asynchronous programming in .NET
Async and await make asynchronous programming feel approachable — but underneath lies a web of subtleties that catch even seasoned .NET developers off guard. This talk goes well beyond the basics: we'll start with tasks, I/O vs CPU-bound work, and common pitfalls like deadlocks and misused .Result calls, then work our way through exception handling, cancellation, and synchronization primitives. Finally, we'll dig into the advanced layer — ValueTask, IAsyncEnumerable, ConfigureAwait, AsyncLocal, channels, and concurrency limiters — giving you a complete picture of the modern async stack.
Basics
• Tasks and what they do
• I/O bound vs CPU bound (via Task.Run)
• Long-running tasks
• What about Threads?
• WhenAll/WhenAny
• Result/Wait and deadlocks
• Async suffix
• Thread.Sleep -> Task.Delay
• WaitAsync
• Parallel.ForEachAsync
• WhenEach (.NET 9)
Exception handling, synchronization, cancellation
• Old-style vs new style (OS-provided vs .NET provided)
• TaskCompletionSource
• CancelationTokenSource, OperationCanceledException and ThrowIfCancellationRequested
• AggregateException
• SemaphoreSlim
• Don't use "lock", Monitor, Mutex, etc
Advanced
• Exceptions and how they are captured in a Task
• AsyncLocal
• ValueTask
• IAsyncDisposable
• ConfigureAwait
• GetAwaiter
• IAsyncEnumerable
• Channel
• ConcurrencyLimiter
Dennis Doomen
Hands-on architect in the .NET space with 29 years of experience on an everlasting quest for knowledge to build the right software the right way at the right time
The Hague, The Netherlands
Links
Please note that Sessionize is not responsible for the accuracy or validity of the data provided by speakers. If you suspect this profile to be fake or spam, please let us know.
Jump to top