Last Updated: May 17, 2026
SynchronizationContext is an abstraction that represents "where work should run." When an await resumes, the runtime asks: do I have a captured context? If yes, post the continuation back to it. That's how a button click handler in a desktop app can await a network call and then safely update a label, even though the network call finished on a thread pool thread. This lesson covers what SynchronizationContext is, how await interacts with it, the classic deadlock that comes from blocking on it, what ConfigureAwait(false) does, and why the rules differ between UI apps, ASP.NET Classic, ASP.NET Core, and console apps.