Если вы хотите, чтобы ваши окна работали, вы должны запустить цикл обработки сообщений после того, как вы их создали (в противном случае ваш поток просто закрывается, и окна не имеют возможности визуализировать себя):
private void OpenSomeWindows()
{
for (int i = 0; i < 3; i++)
{
TestWindow T = new TestWindow();
T.Show();
}
Dispatcher.Run(); // <---------
}
(В основном потоке цикл сообщений создается для вас фреймворком.)
PS: я не уверен, можно ли собирать окна, поэтому я буду хранить ссылки на них где-то:
List<TestWindow> windows = new List<TestWindow>();
for (int i = 0; i < 3; i++)
{
TestWindow t = new TestWindow();
t.Show();
windows.Add(t);
}
Dispatcher.Run();
PPS: Может быть, вы хотите, чтобы ваши окна запускались в главном потоке?На самом деле вы можете сделать это.Вам нужно только следующее:
private void SomeMethod_OnA_NON_STA_Thread()
{
// some other work here
Application.Current.Dispatcher.Invoke(OpenSomeWindows);
}
private void OpenSomeWindows()
{
for (int i = 0; i < 3; i++)
{
TestWindow T = new TestWindow();
T.Show();
}
// this way, no Dispatcher.Run is needed
}