ConfigureAwait(false) Prevents Deadlocks
ConfigureAwait(false) avoids deadlocks in UI and ASP.NET synchronization contexts.
Before (Deadlock Risk)
Blocking the async operation in a UI application causes deadlocks.
public void DoSomething() { var result = GetDataAsync().Result; // Deadlocks if GetDataAsync resumes on UI thread } public async Task<string> GetDataAsync() { await Task.Delay(1000); return "Hello"; }
After (Deadlock Fixed)
Using ConfigureAwait(false), continuation runs on a thread pool instead of the UI thread.
public void DoSomething() { var result = GetDataAsync().ConfigureAwait(false).GetAwaiter().GetResult(); // No deadlock } public async Task<string> GetDataAsync() { await Task.Delay(1000).ConfigureAwait(false); return "Hello"; }