Async/Await - Best Practices in Asynchronous Programming
Avoid async void except the top level event handlers
Async all the way even the main function (with C# 7.1)
Use
ConfigureAwait(false)
in library and let the consumer choose the context
For more details, see Stephen Cleary's blog post or Mads Torgerse's video
Last updated