2015-12-19 3 views
3

С помощью кода ниже я могу создать второе окно, но второе окно закрывается, как только оно инициализируется. Что я здесь делаю неправильно?Открыть второе окно WPF в другом потоке?

private void button_Click(object sender, RoutedEventArgs e) 
    { 
     Thread sta = new Thread(delegate() 
     { 
      Window1 w = new Window1(); 
      w.Show(); 
     }); 
     sta.SetApartmentState(ApartmentState.STA); 
     sta.Start(); 
    } 
+0

ли на самом деле работает второе окно? (с кнопками, элементами управления и т. д.) Мне любопытно, что внутренняя оконная система по-прежнему имеет только один поток обработки сообщений для каждого процесса. – AqD

ответ

3

Nevermind Я нашел его! Я не поставил: System.Windows.Threading.Dispatcher.Run(); в конце deligate.

код теперь гласит:

private void button_Click(object sender, RoutedEventArgs e) 
{ 
    Thread sta = new Thread(delegate() 
    { 
     Window1 w = new Window1(); 
     w.Show(); 
     System.Windows.Threading.Dispatcher.Run(); 
    }); 
    sta.SetApartmentState(ApartmentState.STA); 
    sta.Start(); 
} 
Смежные вопросы