Asynchronous Programming in C#

Discover the practical power of Asynchronous Programming in C# and gain the expertise needed to write responsive, efficient, and scalable applications.

Course Details

What Will Developers Learn?

This comprehensive two-day course for seasoned C# and .NET developers will cover a wide range of topics, from threads, tasks and async/await to advanced features like task schedulers and synchronization contexts. 

Plenty of hands-on exercises are included to enable you to master and apply the concepts of asynchronous programming. By the end of this course, you will know how to use asynchronous techniques to optimize your applications’ efficiency, scalability, and responsiveness.

Duration
2 full days or 4 half days

Level
Advanced

Language
English, Swedish

Pricing
Contact me to enquire

Target Audience: C# Developers

Experienced C# developers who want to understand how to correctly write asynchronous programming to enhance their applications using asynchronous and parallel programming.

In today’s dynamic software landscape, mastering asynchronous programming is increasingly essential for writing faster, hardware-optimized applications. As multi-core CPUs are now standard, parallel processing is the key to unlocking performance. This course is designed for C# developers seeking to take their apps to the next level. 

What Are the Course's Prerequisites?

To get the most from this training, you should have at least one year of experience as a C# developer. A strong understanding of C#, including generics, lambdas, and LINQ, is crucial. Experience in parallel or async programming is not required. This course is up-to-date with .NET 10 and C#14.

How Long is this Course?

The course takes place over 2 days and it can either be delivered over 2 full days or 4 half days.

Tore Nestenius presenting at the Øredev conference in Malmö, November 2024.
Tore Nestenius presenting about authentication at the Copenhagen .NET User Group

Course Agenda

1. Introduction, Processes, and Threads

2. Thread Pool

3. Tasks

4. Waiting For Tasks

5. Error Handling in Asynchronous Code

6. Cancelling Tasks

7. Continuations

8. Async – Await

9. Task Schedulers

10. Async Error Handling

11. Synchronization Contexts

12. ConfigureAwait

13. Value Tasks

Asynchronous Programming in C# Training FAQs

Why should I learn asynchronous programming in C#?

Most modern .NET libraries are built around Task, async, and await. Understanding async programming helps you build responsive apps, avoid thread starvation and deadlocks, and write scalable code for web, desktop, and services.

What topics are covered in this course?

You’ll learn async programming from the ground up: how work is executed on threads, how the .NET thread pool behaves, how Task works, and how to write correct, efficient async code using async/await, cancellation, and best-practice patterns.

Why do you cover threads if we mostly use async/await?

You rarely create threads manually in day-to-day .NET development, but all async code ultimately runs on threads. Understanding threads and the thread pool makes it easier to reason about performance, responsiveness, blocking vs non-blocking code, and why certain async bugs happen.

What topics are not covered in this course?

To keep the workshop focused, we do not cover concurrency primitives and advanced coordination topics such as locks, concurrent collections, TPL Dataflow, Channels, or Pipelines. These topics are better handled in a dedicated advanced concurrency workshop.

Is this course suitable for beginners?

This is not a beginner C# course. You should be comfortable with modern C# syntax and concepts such as lambdas and LINQ. Prior async/parallel programming experience is not required, but it helps if you’ve seen Task and async/await before.

What version of .NET is used?

We use .NET 10 and Visual Studio 2026. The principles and patterns taught apply to earlier .NET versions as well, though some APIs and diagnostics features may differ.

What if I’m using an older version like .NET 6–9?

You can still attend. The core async model (Task, async/await, cancellation, continuations) is stable across .NET 6–9. We’ll call out the few areas where .NET 10 introduces newer APIs or improved tooling.

Is this course recorded or instructor-led?

This is an instructor-led workshop delivered either in-person or live online. You can ask questions throughout the course and get feedback during exercises.

Will there be hands-on exercises?

Yes. The course includes extensive hands-on exercises throughout each module. In most deliveries, more than half the time is practical work, so you leave with skills you can apply immediately.

Do I need any special tools?

You need a .NET development environment that can run .NET 10 (Visual Studio 2026 or an equivalent .NET IDE). We’ll share setup guidance before the course.

Do you offer on-site and remote training?

Yes. We offer both on-site (classroom) training and live online sessions.

Do you provide training in Swedish and English?

Yes. We can teach in Swedish or English. Course materials are in English.

Do you offer half-day trainings?

For on-site deliveries, we typically run full-day sessions. For remote deliveries, half-day or full-day formats can be arranged.

Do you do webinars and shorter talks?

Yes. See our Talks page for current options and topics.

Can the course be customized for our team?

Yes. We offer private team deliveries, where the agenda and exercises can be tailored to your codebase, tech stack, and problem areas. Contact us with your goals and constraints.

How much coding is included, and what’s the difficulty level of the exercises?

More than half of the course is dedicated to hands-on coding. The exercises start at an intermediate level and gradually increase in difficulty, helping you experience common gotchas and pitfalls and learn best-practice patterns you can apply directly in your own .NET applications.

Will I get course materials or example code afterward?

Yes. You’ll receive the course deck and exercise material as a PDF, along with the full exercise solutions (including completed code), so you can review and practice after the workshop.

How up-to-date is this course?

The course is continuously maintained and updated. We regularly revise the content to reflect new .NET features and best practices, and we improve the exercises and material based on participant feedback after each delivery.

Meet Your Instructor

Hello! I’m Tore Nestenius, a senior software developer, trainer, and consultant with deep experience in .NET and C#. I help developers and teams understand modern .NET concepts in a clear, practical, and hands-on way.

Why I’m an expert in this field:

  • Microsoft MVP in .NET: 
    I’ve been active in the .NET community since 2002 and have been recognized as a Microsoft .NET MVP.
  • Sharing knowledge: 
    I write regularly about .NET, C#, security, and related topics on my blog.
  • Frequent speaker:
    I present on .NET at conferences and user group meetups.

Follow me on LinkedIn

Connect with me on LinkedIn to stay up to date with new blog posts, upcoming presentations, webinars, and course announcements.

Tore Nestenius presenting at the .NET Skåne usergroup in Malmö, December 2024 about Rebuilding the Task and ThreadPool Concepts in .NET.
Most Valuable Professionals

For Businesses and Individual Developers

Corporate trainings are arranged for a day and time that suits your team, while my online classes’ dates and times are arranged once there are enough individuals interested, ensuring a better price as well as a time that works for everyone.