Grzegorz Lang
Asynchronicity and multithreading in C#
#1about 3 minutes
Understanding multithreading for CPU-intensive work
Multithreading allows CPU-intensive work to run in the background, but creating too many logical threads leads to expensive context switching.
#2about 3 minutes
Using the ThreadPool and Task abstraction
The ThreadPool manages threads for you, and the Task class provides a powerful abstraction for queuing work and retrieving results without blocking.
#3about 2 minutes
Creating and continuing tasks without blocking
Use Task.Run to create and start a hot task in one step, and use the ContinueWith method to process results without blocking the main thread.
#4about 1 minute
Implementing graceful cancellation with CancellationToken
A CancellationToken signals that an operation should be stopped, which can be handled by checking IsCancellationRequested or calling ThrowIfCancellationRequested.
#5about 2 minutes
How SynchronizationContext manages execution environments
SynchronizationContext is an abstraction for an environment, like a UI thread, allowing you to post work back to a specific context from a background thread.
#6about 2 minutes
The role of the TaskScheduler in C#
The TaskScheduler works with the SynchronizationContext to determine where a task's continuation should be executed, such as on the ThreadPool or a specific UI thread.
#7about 4 minutes
Introduction to asynchronicity with async and await
The async and await keywords simplify asynchronous programming for I/O-bound operations by allowing threads to be released instead of blocked while waiting.
#8about 1 minute
Running operations concurrently with Task.WhenAll
Start multiple asynchronous operations without awaiting them immediately and then use Task.WhenAll to wait for all of them to complete concurrently.
#9about 2 minutes
Choosing the right async return type
Avoid using async void, and consider using the allocation-free ValueTask struct instead of Task for performance-critical hot paths, but be aware of its usage limitations.
#10about 1 minute
Using ConfigureAwait to control context capturing
Use ConfigureAwait(false) in library code to prevent capturing the SynchronizationContext, making the library environment-agnostic and avoiding potential deadlocks.
#11about 4 minutes
Q&A: SynchronizationContext, tooling, and challenges
The Q&A session clarifies that frameworks like Blazor still use SynchronizationContext in .NET Core and discusses debugging tools like Visual Studio's Parallel Stacks.
Related jobs
Jobs that call for the skills explored in this talk.
Matching moments
25:49 MIN
Using coroutines to write linear asynchronous code
Coroutine explained yet again 60 years later
35:31 MIN
Implementing advanced patterns for resilience and decoupling
Cloud-nativeApplications- What’s the buzz about
07:07 MIN
How .NET applications execute on WebAssembly
Using WebAssembly to run, extend, and secure your application
00:04 MIN
Overview of modern C# community-loved features
Modern C#: A Dive into the Community's Most Loved new Features.
1:02:37 MIN
Interoperability between `async/await` and promises
JavaScript the Grumpy Parts
07:21 MIN
Exploring the different Blazor hosting and execution models
Blazor – the new SPA Framework for everyone who hates JavaScript
03:54 MIN
Moving from C# to modern languages like Go
Coffee with developers - Brian Morrison
30:15 MIN
Using ref and unsafe contexts in async methods
C# 13 Unleashed: Live Demos of my Top 10 Cutting-Edge Features!
Featured Partners
Related Videos
Tips, tricks and quirks in .NET
Paweł Łukaszuk
Turbocharged: Writing High-Performance C# and .NET Code
Steve Gordon
Hacking C# from the inside - how to do anything in NET
Adam Furmanek
5 features that help you get the most out of C# 10
Louëlla Creemers
Exploring the Latest Features of .NET and C# by Building a Game
Rainer Stropek
Concurrency in Python
Fabian Schindler
The Eventloop in JavaScript - How does it work?
Christian Woerz
Modern C#: A Dive into the Community's Most Loved new Features.
Louëlla Creemers
From learning to earning
Jobs that call for the skills explored in this talk.
![Senior Software Engineer [TypeScript] (Prisma Postgres)](https://wearedevelopers.imgix.net/company/283ba9dbbab3649de02b9b49e6284fd9/cover/oKWz2s90Z218LE8pFthP.png?w=400&ar=3.55&fit=crop&crop=entropy&auto=compress,format)

Senior Software Engineer [TypeScript] (Prisma Postgres)
Prisma
Remote
Senior
Node.js
TypeScript
PostgreSQL
Senior.Net Core Developer - C#, Blazor
Ascent People
Warrington, United Kingdom
€85K
Senior
API
CSS
MVC
HTML
+9
Backend-Entwickler (m/w/d) - C# / .NET Core
Dotzilla GmbH & Co. KG
Oberhausen, Germany
API
Scrum
Redis
DevOps
Docker
+7
C# .NET Developer
CORE ASSET LTD
Newcastle upon Tyne, United Kingdom
€40-50K
Intermediate
GIT
HTML
.NET
Azure
+8
Senior .NET Developer (m,f,d) - C#/Blazor/REST APIs
ITech Consult AG
Aarau, Switzerland
Senior
.NET
REST
Azure
Blazor
RabbitMQ
+1


