Das Problem:
Wir haben eine Winforms-Anwendung, die ein weiteres WPF-Fenster öffnen kann. Dieses Fenster enthält verschiedene Symbole und Texte und ist nicht übermäßig komplex. Zurück zum Hauptfenster, das WinForms, hat auch ein WPF-Steuerelement, das mit ElementHost (ElementHost wurde speziell entwickelt, um es Winforms zu ermöglichen, ein WPF-Steuerelement zu hosten) eingebettet. Wir haben jedoch festgestellt, dass, wenn die Speicherauslastung dieser Anwendung ziemlich hoch wird, das Öffnen dieses zweiten WPF-Fensters einige Zeit in Anspruch nehmen kann.
Wir haben in VS2012 eine kleine Testanwendung erstellt, die das Problem reproduzieren kann. Die Testanwendung öffnet ein Winforms-Fenster mit zwei Schaltflächen. "Add 4 GB Speicherverbrauch" und "Open WPF-Fenster". Das WPF-Fenster hat ein einzelnes kleines Symbol (48 * 48) und das ist alles. Wenn wir die 4 GB-Speicherbelegung hinzufügen und versuchen, das Fenster zum ersten Mal zu öffnen, dauert es etwa 7 Sekunden, um das Fenster zu öffnen.
CODE: Ich habe die Test-App und den Quellcode über BitBucket öffentlich zugänglich gemacht.
Dinge, die wir herausgefunden haben:
Hat jemand anderes dieses Problem erfahren? Irgendwelche Vorschläge, was unser nächster Schritt sein könnte?
Nach ein paar weiteren Analysen mit einem Profiler, dieser Artikel schien das gleiche Problem zu sein wie das, was ich erlebt habe.
%Vor%Nicht die schönste Lösung, aber es hat das Problem definitiv behoben.
Tags und Links wpf .net c# winforms elementhost