2012-04-22 3 views
1

я начинаю в моем приложении некоторые темы, какПолучить все окна из всех нитей

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(); 

Они имеют все окно, которое генерируется и показано. Теперь, когда я использую в моей Main-Thread

Application.Current.Windows

Я не получаю окна моих дополнительных потоков.

Как я могу получить все окна всех потоков моего приложения?

ответ

0

Вы не должны создавать окна ни на одном потоке, кроме основного потока приложения. Вместо этого создайте все окна в главном потоке приложения и используйте другие потоки (например, параллельную библиотеку задач) для работы асинхронно, чтобы поток основного приложения (и, следовательно, пользовательский интерфейс) оставался отзывчивым.

+0

Мне нужно создать окна на других потоках из-за производительности создания окон. Все это отлично работает. Теперь у меня есть проблема, чтобы получить окна из других потоков. – BennoDual

+0

@ t.kehl «Производительность оконного создания» велика и всегда достаточно хороша. Возможно, для получения данных требуется слишком много времени. Затем переместите это в поток. –

+0

@Henk Holterman - Но мой вопрос заключался не в создании окон в потоке - это отлично работает, и я не могу это изменить - вместо этого я ищу способ получить все окна, созданные в разных потоках. – BennoDual

Смежные вопросы