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

发布于 2024-12-17 02:07:26 字数 182 浏览 0 评论 0原文

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

I am starting a new UI-Thread in my WPF-application. Now I am searching a way to get a list with all windows in this thread - like I will get it for the main-thread with System.Windows.Application.Current.Windows.
Is there something in the .NET-Framework or does I have to implement it myself? When I have to implement it myself, perhaps someone have little bit of sample-code?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

尾戒 2024-12-24 02:07:26

引用 MSDN

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

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

此属性只能在创建 Application 对象的线程中使用。

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

To quote MSDN:

A Window reference is automatically added to Windows as soon as a window is instantiated on the user interface (UI) thread; windows that are created by worker threads are not added. A Window reference is automatically removed after its Closing event has been handled and before its Closed event is raised.

By default, the first item added to the Windows property becomes the MainWindow.

This property is available only from the thread that created the Application object.

So it seems the windows created by worker threads are not hold in any collection automatically. I assume you create that window on the worker thread - so you should store a reference to it yourself for later access (you could do that in the Windows constructor by adding this to some window manager class)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文