从所有线程获取所有窗口

时间:2012-04-22 10:23:23

标签: c# .net wpf multithreading dispatcher

我在我的应用程序中启动一些线程,如

  this.Thread = new Thread(() =>
  {
      System.Windows.Threading.Dispatcher.CurrentDispatcher.BeginInvoke(new Action(() =>
      {
         ...
         ...

      }));
      System.Windows.Threading.Dispatcher.Run();
                           }) { IsBackground = true, Name = Constants.SPECIAL_UI_THREAD_NAME};
  this.Thread.SetApartmentState(ApartmentState.STA);
  this.Thread.CurrentCulture = Thread.CurrentThread.CurrentCulture;
  this.Thread.CurrentUICulture = Thread.CurrentThread.CurrentUICulture;
  this.Thread.Start();

它们具有生成和显示的所有窗口。 现在,当我在我的主线程

中使用时
  

Application.Current.Windows

我没有得到我的额外线程的窗口。

如何获取应用程序所有线程的所有窗口?

1 个答案:

答案 0 :(得分:0)

您不应该在应用程序主线程以外的任何线程上创建窗口。相反,在主应用程序线程上创建所有窗口并使用其他线程(例如任务并行库)异步工作,以便主应用程序的线程(以及UI)保持响应。