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

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

最佳答案

没关系,我找到了!我没有放: System.Windows.Threading.Dispatcher.Run(); 在委托(delegate)结束时。

现在的代码是:

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

关于c# - 在另一个线程中打开第二个 WPF 窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34365858/

相关文章:

wpf - 在样式中设置子属性

c++ - 跨线程同步属性的最佳方法

c++ - 网络多线程

c# - 在控制台应用程序中将 HTML 标记传递到 RazorEngine

c# - Span<T> 和异步方法

wpf - 提高 StackPanel 中巨大列表框的性能?

c# - 如何在对话框中设置我的主要应用程序主题,而不是在 XAML 中显式设置它?

c# Thread不会将Row添加到DataGridView CrossThreadError

c# - 如何防止 AutoPostBack 重置我的页面?

c# - Dictionary.ContainsKey 行为不端 c#