在另一个线程中打开第二个WPF窗口?

时间:2015-12-19 00:15:09

标签: c# wpf multithreading sta

使用下面的代码,我可以生成第二个窗口,但第二个窗口在初始化时立即关闭。我在这里做错了什么?

    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();
    }

1 个答案:

答案 0 :(得分:3)

没关系,我找到了它!我没说: System.Windows.Threading.Dispatcher.Run(); 在整理结束时。

现在代码如下:

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();
}