Async Expert

online course created by Dotnetos

Your path to excel at async in .NET


429€ | 499$ | 10590 Kč | 1899 zł

(+ VAT if applies)

Async Expert course in numbers:

758 attendees

only 1 return

81 lessons

19 demos
9 homework tasks

1704 minutes

225 of demos
211 of webinars

917 slides

Course description

While .NET environment was receiving another tools connected with concurrency and async programming, reception and feelings were mixed. On one hand the received opportunities were amazing. On the the other, it created the necessity to learn and use totally different elements of the language as well as mechanisms included in .NET itself...

While training engineers during internal and opened trainings, discussing during conferences and browsing the last Dotnetos survey records - in which almost 500 persons from all over the world took part - we’ve noticed that async programming and concurrency are very important for you. This is a topic which engineers related to .NET want to learn. We ourselves share that opinion. Today programming in .NET is almost impossible without understanding of concurrency and async-await technique.

To help you gain that knowledge and understand the basics and rules of async world and concurrency we prepared that Async Expert online course. Async Expert is 10 solid weeks of learning through which we will guide you from the async basics to sync and concurrency collections. To allow you to verify possessed knowledge we prepared suitable homeworks. Extra content from our mentors (Marc Gravel, Daniel Marbach, Steve Cleary) that will help you answer all your extra questions are an additional bonus. Everything will be completed with communication with us via Community - a place where you can talk not only with us, but also with other participants of the course.


429€ | 499$ | 10590 Kč | 1899 zł

(+ VAT if applies)

See opinions about the course and join us!

Course agenda



  1. Course overview
  2. BenchmarkDotNet basics
  3. Demo:
  4. Demo: ConcurrencyVisualizer
  5. Demo: Parallel Stacks/Tasks
  6. Homework


  1. Threads
  2. ThreadPool
  3. Demo: ThreadPool use with different API
  4. Demo: ThreadPool.BindHandle usage
  5. Homework

Async basics

  1. Task API
  2. Async-await foundations (with demos)
  3. Async eliding
  4. ValueTask
  5. Task API and async
  6. Homework

Async II

  1. Execution, contexts, scheduler
  2. Demo: let’s deadlock it!
  3. Demo: your own SynchronizationContext
  4. Demo: Scheduler Azure Durable Functions
  5. Sync vs async
  6. Demo: utilizing legacy synchronous APIs
  7. Fire and forget
  8. TaskCompletionSource
  9. Demo: wrapping callback-based APIs (Event-Based Asynchronous Pattern)
  10. Awaitables
  11. Locals
  12. Demo: StringBuilder i ThreadLocal
  13. Demo: scopes with AsyncLocal
  14. Demo: floating the state
  15. Homework

Async III

  1. Tasks aggregations
  2. Demo: awaiting in task completion order
  3. Demo: Parallel.For with async vs Task.WhenAll
  4. Demo: testing with TaskCompletionSource and Task.WhenAny
  5. Demo: Timeout with WhenAny
  6. IAsyncDiposable
  7. IAsyncEnumerable
  8. Demo: gRPC with IAsyncEnumerable
  9. Demo: New SQL client
  10. Homework

Low-level concurrency

  1. Hardware
  2. volatile
  3. Demo: Epoch programming in ConcurrentQueue
  4. Interlocked
  5. Demo: simple pool with Interlocked.Exchange
  6. Barriers and alignment
  7. Demo: range reservation with Aeron.NET and Interlocked.CompareExchange
  8. Homework


  1. Exclusive locking
  2. Demo: decompiling lock
  3. Demo: non-blocking usage of Monitor.TryEnter
  4. Semaphore and SemaphoreSlim
  5. Demo: task throttling with Task and SemaphoreSlim
  6. ReaderWriterLock
  7. Demo: Building custom string pool with ReaderWriterLock
  8. Wait handles
  9. CountdownEvent
  10. Barrier
  11. Asynchronous primitives
  12. Demo: AsyncLock implementation
  13. Homework

Concurrent Data Structures

  1. Foundations
  2. BlockingCollection
  3. Demo: BlockingCollection z CancellationToken
  4. ConcurrentStack
  5. Demo: object cache with ConcurrentStack
  6. ConcurrentQueue
  7. Demo: memory pool in Kestrel ASP.NET with ConcurrentQueue
  8. ConcurrentDictionary
  9. Demo: efficient caching with ConcurrentDictionary.GetOrAdd
  10. ConcurrentBag
  11. Homework

New Concurrent Data Structures

  1. Introduction, .NET streams their problematic nature
  2. Pipelines
  3. Demo: TcpEcho with Pipelines
  4. Channels
  5. Demo: Usage of the Channel in the ASP.NET Core MsQuickListener
  6. Homework

Miscellaneous topics

  1. Demo: IValueTaskSource with Interlocked.CompareExchange
  2. Demo: IValueTaskSource based on an array with token discriminator
  3. ValueTask and pooling in .NET 5
  4. ManualResetValueTaskSourceCore
  5. False Sharing
  6. F# async vs C# async
  7. Summary of the course

What do I get?

🌶 Access to 10-weeks Async Expert on-line course - Access to full Async Expert course material

🌶 Material from Mentors - Additional material from international Mentors of that program, who are async programming experts.

🌶 Access to the course platform - The access to the platform as well as to our dedicated discussion page, which allows you to contact the instructor and other course participants.

🌶 Access to the repository - Besides the access to the recordings, ability to contact others and get additional materials from Mentors of the programme you receive the access to repository that includes code examples.


429€ | 499$ | 10590 Kč | 1899 zł

(+ VAT if applies)

Course authors

Szymon Kulec

Dotnetos co-founder, architect, speaker

I like to incorporate an unique combination of Software Architecture and Performance Engineering. With broad knowledge of modern architecture principles, distributed systems, as well as deep understanding of performance principles I make every allocation fear for its existence. I never allocate before noon.

Konrad Kokosa

Dotnetos co-founder, Microsoft MVP, author, speaker

I’m a Pro .NET Memory Management book author and independent consultant, blogger, speaker and a professional Tweeter [see: Twitter]. I share my passion as a .NET trainer, especially in the performance and app diagnosis field.

Łukasz Pyrzyk

Dotnetos co-founder, Microsoft MVP, author, speaker

I’m a software developer interested in performance topics, microservices and optimizations. Moreover, I’m a speaker (more than a blogger) and an active Twitter user.

Course mentors

Marc Gravell

Microsoft MVP, Code geek working at Stack Overflow

Marc has worked extensively with async in .NET from its inception, and async is a key component and consideration in all current library work. He maintains the popular 'Dapper', 'StackExchange.Redis' and 'protobuf-net' libraries, and contributes to many others - and is a long standing Microsoft MVP for these contributions. Moreover, he has been helping to build Stack Overflow for 10 years, specializing in performance, data access and communications in .NET!

Daniel Marbach

Microsoft MVP, Solutions Architect at Particular Software

He can bend minds and spoons with asynchronous programming. He has spoken at several conferences and usergroups about asynchronous programming and quality-driven development. He enjoys weightlifting, dark-roasted coffee, playing with his son and writing more code - at least until midnight when his self-imposed router hack kicks in.

Steve Cleary

Microsoft MVP, "Concurrency in C# Cookbook” author

Top answerer for async/await questions on Stack Overflow. In his free time he's a husband, father… and he programs. Today he uses C#/JavaScript, but remains interested in many different languages.


429€ | 499$ | 10590 Kč | 1899 zł

(+ VAT if applies)

Questions and answers

🌶 Which programming language will be used in examples?

All the examples as well as all our work will be done in C#.

🌶 Which version of .NET will be used in samples?

We will work on LTS version of .NET Core 3.1 showing differences with .NET Framework when needed.

🌶 When does the course begin and for how long does it last?

The course is available after purchase. All material is available, however we recommend watching one module per every week to not overwhelm you and to allow all the group to get through it at the same time.

🌶 What is the format of that course?

It is a video course. Recordings are uploaded to the platform. After signing in with your login and password, you have an access to your account. Besides the recordings, you'll gain access to our Community platform where you can communicate with the instructor and other participants. Links, password and login will be passed one week before the course begins.

🌶 How long will I have the access to the course?

You will receive life-long access to that edition of the course, including its updates.

🌶 What if I would not be satisfied with the course?

If you watch less than 30% of the course and decide that the course is not for you, you will receive a refund. You have 30 days to decide. Just write to contact[at], and we will return you 100% value.

🌶 Will I receive all the course material at once?

Yes. All material is available immediately. We recommend watching one module per week to not overwhelm you and to keep the group pace at the same tempo.

🌶 Will I receive an invoice?

Yes, you will receive a VAT invoice with your purchase. It will be sent to you within few days to the e-mail address provided during the order.

🌶 How can I pay for that course?

Payment is done with the use of our on-line shop. Each type of payment supported by it is ok for us.

🌶 Can I pay later, on installments, etc.?

Unfortunately it’s not possible to pay on installments but you can choose a “pro forma” invoice that will allow you to pay later by bank transfer.

🌶 How many people can access one course account?

The access is given to one person, using an address provided during the purchase. If you are interested in buying more accesses please contact us using contact[at] e-mail address.

🌶 What if I have a problem with something or something is unclear?

Write to us with that e-mail address: contact[at]


If you think that Async Expert is a nice dose of knowledge, share it with friends. Just use one of the buttons below!
Thank you!