Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何查找在单独线程WPF上运行的所有打开的窗口_C#_Wpf - Fatal编程技术网

C# 如何查找在单独线程WPF上运行的所有打开的窗口

C# 如何查找在单独线程WPF上运行的所有打开的窗口,c#,wpf,C#,Wpf,在我的WPF应用程序中,我必须在UI线程上显示一些窗口,在单独的线程上显示一些窗口。我可以使用System.windows.Application.Current.windows访问UI线程上运行的所有窗口,但找不到在单独线程上运行的窗口 有人知道我怎样才能做到这一点吗 谢谢System.Windows.Application.Current.Windows只提供在UIThread而不是WorkerThread上创建的窗口。从MSDN: 一旦在用户界面(UI)线程上实例化窗口,窗口引用就会自动添

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

有人知道我怎样才能做到这一点吗


谢谢

System.Windows.Application.Current.Windows
只提供在UIThread而不是WorkerThread上创建的窗口。从MSDN:

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


我想你得自己记账了。例如,使用
静态
窗口列表。请记住,您需要防止并发访问,并且需要在窗口关闭时删除这些窗口。

如何在其他线程中运行窗口?你是说另一个进程吗?Windows只在主UI线程上运行。如果它们运行在另一个线程上,那么您就有问题了。我已经在不同的线程上创建了windows,使用了Sam Noble在C#2008中的WPF配方,Sam Bourton有一章介绍了这一点,以及与之相关的所有簿记。但是,如果您刚刚开始,您需要一个非常好的理由在另一个线程上创建窗口。如果您想要响应更快的窗口,请使用async await或其他线程模型执行较慢的任务。