Speaker Deck

Async in C# - The Good, the Bad and the Ugly

by slang25

Published September 16, 2017 in Technology

We will take a closer look at why we care about async, how it works and then deep dive into async issues.

By the end of this session we will understand what SynchronizationContexts are, when to use ConfigureAwait, how deadlocks occur and how to detect and avoid them. On the way we'll touch on some C#7 features.

Whether you're building web apps or shared libraries, there will be something for everyone.

ContextFreeTask - https://github.com/ufcpp/ContextFreeTask/
vs-threading - https://github.com/Microsoft/vs-threading/
Async006 - https://github.com/dotnet/roslyn-analyzers/blob/master/src/Unfactored/AsyncPackage/AsyncPackage/BlockingAsyncAnalyzer.cs
ConfigureAwait.Fody - https://www.nuget.org/packages/ConfigureAwait.Fody
ConfigureAwait Checker for ReSharper - https://github.com/cincuranet/ConfigureAwaitChecker
ConfigureAwaitChecker - https://github.com/cincuranet/ConfigureAwaitChecker
DeadlockDetection - https://github.com/ramondeklein/deadlockdetection
Stephen Cleary - https://blog.stephencleary.com/
Avoiding basic mistakes in async await - http://www.anthonysteele.co.uk/AsyncBasicMistakes
Resynchronising async code - http://www.anthonysteele.co.uk/AsyncResync