private static IDisposable InitializeExecutionEnvironment() { #if APARTMENT_STATE if (Thread.CurrentThread.GetApartmentState() == ApartmentState.STA) { var context = SynchronizationContext.Current; if (context == null || context.GetType() == typeof(SynchronizationContext)) { var singleThreadedContext = new SingleThreadedTestSynchronizationContext(); SetSynchronizationContext(singleThreadedContext); return(On.Dispose(() => { SetSynchronizationContext(context); singleThreadedContext.Dispose(); })); } } #endif return(null); }
private static IDisposable InitializeExecutionEnvironment() { if (Thread.CurrentThread.GetApartmentState() == ApartmentState.STA) { var context = SynchronizationContext.Current; if (context == null || context.GetType() == typeof(SynchronizationContext)) { var singleThreadedContext = new SingleThreadedTestSynchronizationContext( shutdownTimeout: TimeSpan.FromSeconds(10)); SetSynchronizationContext(singleThreadedContext); return(On.Dispose(() => { SetSynchronizationContext(context); singleThreadedContext.Dispose(); })); } } return(null); }