获取当前线程中所有窗口的列表

时间:2011-11-21 18:31:39

标签: c# wpf multithreading c#-4.0 ui-thread

我在WPF应用程序中启动了一个新的UI-Thread。现在我正在寻找一种方法来获取包含该线程中所有窗口的列表 - 就像我将使用System.Windows.Application.Current.Windows获取主线程一样。 .NET-Framework中有什么东西或者我自己要实现它吗?当我必须自己实现它时,也许有人会有一点样本代码?

1 个答案:

答案 0 :(得分:2)

引用MSDN

  

只要在用户界面(UI)线程上实例化窗口,就会自动将Window引用添加到Windows;不添加由工作线程创建的窗口。在处理Closing事件之后以及在其Closed事件被引发之前,将自动删除Window引用。

     

默认情况下,添加到Windows属性的第一个项目将成为MainWindow。

     

此属性仅可从创建Application对象的线程中使用。

因此,工作线程创建的窗口似乎不会自动保存在任何集合中。我假设您在工作线程上创建了该窗口 - 因此您应该自己存储对它的引用以供以后访问(您可以通过将this添加到某个窗口管理器类来在Windows构造函数中执行此操作)