public static AsyncSynchronizationContext Register() { var syncContext = Current; if (syncContext == null) throw new InvalidOperationException("Ensure a synchronization context exists before calling this method."); var customSynchronizationContext = syncContext as AsyncSynchronizationContext; if (customSynchronizationContext == null) { customSynchronizationContext = new AsyncSynchronizationContext(syncContext); SetSynchronizationContext(customSynchronizationContext); } return customSynchronizationContext; }