【问题标题】:How to find all open windows running on separate thread WPF [closed]如何找到在单独线程 WPF 上运行的所有打开的窗口 [关闭]
【发布时间】:2016-03-10 12:42:54
【问题描述】:

在我的 WPF 应用程序中,我必须在 UI 线程上显示一些窗口,而在单独的线程上显示一些窗口。我可以使用 System.Windows.Application.Current.Windows 访问在 UI 线程上运行的所有窗口,但无法找到在单独线程上运行的窗口。

谁能知道我怎么能做到这一点?

谢谢

【问题讨论】:

  • 如何在另一个线程中运行一个窗口?你的意思是另一个过程吗?
  • Windows 仅在主 UI 线程上运行。如果它们在另一个线程上运行,那么您就有问题了。
  • 我在单独的线程上创建了窗口,使用stackoverflow.com/questions/1111369/…
  • Sam Noble 撰写的 C# 2008 中的 WPF 食谱,Sam Bourton 对此有一章,以及随之而来的所有簿记。但是如果你刚刚开始,你需要一个很好的理由在另一个线程上创建窗口。如果您想要响应速度更快的窗口,请使用异步等待或其他线程模型执行较慢的任务。

标签: c# wpf


【解决方案1】:

System.Windows.Application.Current.Windows 只为您提供在 UIThread 而不是 WorkerThread 上创建的 Windows。来自 MSDN:

只要在用户界面 (UI) 线程上实例化窗口,就会自动将窗口引用添加到 Windows;不添加由工作线程创建的窗口。

我猜你将不得不自己做簿记。例如,通过使用 static 窗口列表。请记住,您需要防止并发访问,并且需要在这些窗口关闭时将其移除。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-25
    • 2012-10-10
    • 2020-08-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多