# `SynchronizationContextSwitcher`
```csharp
public static class SynchronizationContextSwitcher  
{  
    public record Switcher(SynchronizationContext? Context) : INotifyCompletion  
    {  
        public bool IsCompleted => Context == null || ReferenceEquals(SynchronizationContext.Current, Context);  
        public void OnCompleted(Action continuation) => Context?.Post(_ => continuation(), null);  
        public void GetResult() { }  
        public Switcher GetAwaiter() => this;  
    }  
    public static Switcher SwitchTo(SynchronizationContext? context) => new(context);  
}
```
## Sources
- [Explicitly switch to the UI thread in an async method](https://thomaslevesque.com/2015/11/11/explicitly-switch-to-the-ui-thread-in-an-async-method/)