【发布时间】: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