C# › Asynchronous Programming

What does ConfigureAwait(false) do, and when is it appropriate to use?

Intermediate

Answer

ConfigureAwait(false) tells the awaited Task NOT to resume its continuation on the original captured SynchronizationContext — appropriate in library code that doesn't need to run back on a specific UI/request context, improving performance and avoiding deadlock risk; generally unnecessary (and often omitted) in modern ASP.NET Core, which has no SynchronizationContext by default.
public async Task<string> FetchDataAsync() {
  var result = await httpClient.GetStringAsync(url).ConfigureAwait(false);
  return result.ToUpper(); // this line doesn't need the original context
}
Real-world example Using ConfigureAwait(false) throughout a reusable class library (like a NuGet package) that could be consumed by both UI and server applications.

Common follow-ups: Why is ConfigureAwait(false) generally considered unnecessary boilerplate in modern ASP.NET Core code specifically?