static void Main(string[] args) { WinRT.ComWrappersSupport.InitializeComWrappers(); OutputStack = new(); bool isRedirect = DecideRedirection(); if (!isRedirect) { Microsoft.UI.Xaml.Application.Start((p) => { var context = new DispatcherQueueSynchronizationContext( DispatcherQueue.GetForCurrentThread()); SynchronizationContext.SetSynchronizationContext(context); new App(); }); } }
private void OnNewWindow(object sender, RoutedEventArgs e) { if ((bool)IsSameThread.IsChecked) { MainWindow mainWindow = new MainWindow(); mainWindow.Activate(); } else { var thread = new Thread(() => { var syncContext = new DispatcherQueueSynchronizationContext(Microsoft.System.DispatcherQueue.GetForCurrentThread()); SynchronizationContext.SetSynchronizationContext(syncContext); Application.Start((p) => { MainWindow mainWindow = new MainWindow(); mainWindow.Activate(); }); }); thread.SetApartmentState(ApartmentState.STA); thread.Start(); } }