WPF-Benutzeroberfläche auf mehreren Threads?

Ich habe eine große WPF MVVM-Anwendung (derzeit sind über 100 Fenster im Wachstum). Obwohl ich versuche, alles in Hintergrundthreads zu tun, muss das Ergebnis immer an den Benutzeroberflächenthread zurückgesendet werden, damit es angezeigt wird. Wenn Sie viele Fenster gleichzeitig ausführen, kann dies die Leistung beeinträchtigen.

Ich habe in der Vergangenheit versucht, jedes Fenster auf einem separaten UI-Thread auszuführen, aber es gab so viele Threading-Probleme, dass ich auf das Standardmodell von WPF von nur 1 UI-Thread pro App zurückgreifen musste.

Ich weiß, dass mit Windows 10 viele Benutzer noch mehr Fenster auf separaten Desktops öffnen und dies dadurch verschlimmern.

Weiß jemand, wie mehrere UI-Threads in WPF richtig funktionieren? Oder habe ich Informationen, die ich untersuchen kann, um meine App auf diesem Weg weiter zu bringen?

Ich habe in der Vergangenheit versucht, etwas Ähnliches zu tun:

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

Das war vor ungefähr 2 Jahren und ich kann mich leider nicht mehr an alle Probleme erinnern, mit denen ich konfrontiert war.

Gibt es eine andere Möglichkeit? Hat jemand eine App mit vielen Fenstern bekommen, die mit diesem oder einem anderen Ansatz richtig funktioniert?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage