【问题标题】:WPF multiple windows created in different threadsWPF在不同线程中创建的多个窗口
【发布时间】:2011-10-10 12:53:23
【问题描述】:

我在一个有一个主窗口和一些 TextBlocks 的应用程序上工作。一旦用户单击一个 TextBlock,就会创建一个新窗口并显示与该 TextBlock 相关的数据图表。我在不同的线程上创建了这样的新图表 Wndow,如下所示:

  private void xTB_MouseDown(object sender, MouseButtonEventArgs e)
    {
        Thread _displayChartThread = new Thread(() =>
        {
            Window w = new Window()

            w.Closed += (sender2, e2) =>w.Dispatcher.InvokeShutdown();
            w.Show();

            System.Windows.Threading.Dispatcher.Run();
        });

        _displayChartThread.SetApartmentState(ApartmentState.STA);
        _displayChartThread.IsBackground = true;
        _displayChartThread.Start();
    }

问题是,当您打开多个图表窗口并关闭主窗口时,图表窗口仍处于打开状态而不会被破坏。我可以看到图表窗口不知道主窗口是他们的所有者,我无法在创建图表窗口的线程中将他们的 Owner 属性设置为主窗口。

关于如何处理这个问题的任何想法?我的意思是,一旦主窗口关闭,所有图表窗口(在不同线程中创建)也会关闭。

提前致谢。

【问题讨论】:

  • 您是否尝试将新创建的窗口的Parent设置为主窗口?

标签: wpf multithreading window


【解决方案1】:

您可以在主窗口中保留对子窗口的引用。当主窗口关闭时,您可以关闭所有子窗口(使用childWindow.Dispatcher 调用CLose

【讨论】:

    猜你喜欢
    • 2012-04-22
    • 2019-05-06
    • 2012-04-04
    • 1970-01-01
    • 2013-08-19
    • 1970-01-01
    • 2012-03-28
    • 1970-01-01
    相关资源
    最近更新 更多