UI do WPF em vários threads?

Eu tenho um aplicativo WPF MVVM grande (mais de 100 janelas atualmente e em crescimento.) Embora eu tente fazer tudo o que puder nos encadeamentos em segundo plano, sempre chega um momento em que os resultados devem ser enviados de volta ao encadeamento da interface do usuário para serem exibidos. Quando você tem muitas janelas fazendo isso ao mesmo tempo, isso pode afetar o desempenho.

Eu tentei executar cada janela em um thread de interface do usuário separado no passado, mas tive tantos problemas de encadeamento que tive que reverter para o modelo padrão do WPF de apenas 1 thread de interface do usuário por aplicativo.

Eu sei que com o Windows 10 chegando, muitos usuários abrirão ainda mais janelas em áreas de trabalho separadas e, assim, tornarão isso pior.

Alguém sabe como fazer com que vários threads da interface do usuário funcionem corretamente no WPF? Ou tem alguma informação que eu possa investigar para ajudar meu aplicativo a seguir mais adiante?

A abordagem que tentei no passado foi fazer algo semelhante a isto:

private void OnCreateNewWindow(
   object sender,
   RoutedEventArgs e)
  {
   Thread thread = new Thread(() =>
    {
     Window1 w = new Window1();
     w.Show();

     w.Closed += (sender2, e2) =>
      w.Dispatcher.InvokeShutdown();

     System.Windows.Threading.Dispatcher.Run();
    });

   thread.SetApartmentState(ApartmentState.STA);
   thread.Start();
  }

Isso foi há cerca de dois anos e, infelizmente, não consigo mais me lembrar de todos os problemas que enfrentei ao usar isso.

Existe outro caminho? Alguém conseguiu um aplicativo com muitas janelas para funcionar corretamente usando essa abordagem ou outra?

questionAnswers(1)

yourAnswerToTheQuestion