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

3
使用下面的代码,我能够生成第二个窗口,但是该窗口在初始化后立即关闭。这里我做错了什么?
    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();
    }

第二个窗口真的能工作吗?(带有按钮、控件等)我很好奇,因为内部窗口系统仍然每个进程只有一个消息处理线程。 - jiping-s
1个回答

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接