【问题标题】:Open 2nd WPF window in another thread?在另一个线程中打开第二个 WPF 窗口?
【发布时间】:2015-12-19 00:15:08
【问题描述】:

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

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

【问题讨论】:

  • 第二个窗口真的有效吗? (带有按钮、控件等)我很好奇,因为内部窗口系统每个进程仍然只有一个消息处理线程。

标签: c# wpf multithreading sta


【解决方案1】:

没关系,我找到了!我没有放: 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();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    相关资源
    最近更新 更多