Ready for "correcting common async/await mistakes in .NET" by @TheCodeTraveler. #NDCOslo
The thread pool is managed by synchronisation context
Maximum number of threads governed by available virtual memory
Doing long-running work on a background thread is important to keep the UI thread available for user interaction
C# compiler generates a state machine (class implementing IAsyncStateMachine) from an await statement
Generated MoveNext() method is a big switch statement - a case for each time we use "await"
Non-awaited tasks hide exceptions
Never call Wait() on a Task
If you need to call an async method synchronously, use GetAwaiter().GetResult(). This gives us correct exception handling
Use ConfigureAwait(false) to avoid having to synchronise on the calling thread
Use ConfigureAwait(false) everywhere except the UI
If an async method doesn't do anything other than await another method, we can just return the Task directly to avoid a context switch
Don't do this from inside try/catch or using blocks
If the hot path in a method does not use the await keyword, return a ValueTask instead.
Don't call async Task methods from the constructor. Constructors should be fast.
async void should be avoided most of the time because exceptions won't be caught
Intellisense doesn't differentiate between void and async void
Non-UI applications won't have a SynchronizationContext, so don't need ConfigureAwait(false)
ConfigureAwait(false) needs to be called after every await, all the way down the method tree
Missing some Tweet in this thread?
You can try to force a refresh.

Like this thread? Get email updates or save it to PDF!

Subscribe to Ben Owen @ #NDCOslo 🇧🇻
Profile picture

Get real-time email alerts when new unrolls are available from this author!

This content may be removed anytime!

Twitter may remove this content at anytime, convert it as a PDF, save and print for later use!

Try unrolling a thread yourself!

how to unroll video

1) Follow Thread Reader App on Twitter so you can easily mention us!

2) Go to a Twitter thread (series of Tweets by the same owner) and mention us with a keyword "unroll" @threadreaderapp unroll

You can practice here first or read more on our help page!

Follow Us on Twitter!

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just three indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3.00/month or $30.00/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!