.NET 11 Preview 2: Runtime Async, Native OpenTelemetry, and AI-Ready EF Core
A practical walkthrough of the standout features in .NET 11 Preview 2, from runtime-native async and built-in OpenTelemetry tracing to vector search in EF Core and a resilient Kestrel parser.
Streaming Data with SignalR in .NET
Use SignalR's server-to-client and client-to-server streaming to handle continuous data flows like live feeds and file uploads.
PeriodicTimer for Clean Background Work in .NET
Replace Task.Delay loops with PeriodicTimer for reliable, cancellable periodic background work in .NET hosted services.
Diagnosing and Preventing Deadlocks in Async .NET Code
Identify the root causes of async deadlocks in .NET, learn diagnostic techniques, and apply patterns that prevent them.
SemaphoreSlim for Async Throttling and Rate Limiting
Use SemaphoreSlim to limit concurrent access to resources in async code, preventing overload of databases, APIs, and shared services.
IAsyncEnumerable and Async Streams in .NET
Stream data asynchronously with IAsyncEnumerable, reducing memory usage and enabling reactive-style processing over async data sources.
CancellationToken Best Practices in .NET
Learn how to properly propagate, link, and respond to CancellationTokens throughout your async .NET code.
Task.WhenAll vs Task.WhenAny: Patterns for Concurrent Operations
Master Task.WhenAll and Task.WhenAny patterns for running concurrent async operations, with error handling and timeout strategies.
Parallel.ForEachAsync: Controlled Async Concurrency
Use Parallel.ForEachAsync to process collections concurrently with built-in degree-of-parallelism control and cancellation support.
System.Threading.Channels for Producer-Consumer Pipelines
Use System.Threading.Channels to build efficient, back-pressure-aware producer-consumer pipelines in .NET.
SynchronizationContext Demystified
Understand what SynchronizationContext is, how different .NET platforms implement it, and why it shapes async behaviour.
ConfigureAwait Explained: When and Why It Matters
Understand what ConfigureAwait(false) actually does, when to use it, and why library authors care about it more than application developers.
Async/Await Under the Hood: How the Compiler Builds State Machines
Explore how the C# compiler transforms async methods into state machines, and what actually happens when you await a Task.
Testing Async Code in .NET: Patterns and Pitfalls
Practical patterns for testing asynchronous .NET code correctly, including common mistakes that lead to false-passing tests.
ValueTask vs Task: When to Use Which
Understand when ValueTask<T> offers genuine performance benefits over Task<T> and when it introduces unnecessary risk.