2009-08-06 8 views
0

Ich bin ein bisschen hier verloren, und ich weiß nicht, wasWPF-Anwendung einfrieren

Ich habe ein Problem zu tun, das ich nicht weiß, was die Quelle davon. Wir haben eine große wpf-Anwendung, die ähnlich wie Prisma (Composite-Anwendung) aufgebaut ist Tatsächlich verwenden wir viele prism Bibliothek. Ich schrieb ein Modul, um ein bestehendes Modul zu ersetzen. Und die Anwendung lädt jetzt mein Modul anstelle des alten Moduls.

Ich beginne zu bemerken, mit dem neuen Modul, dass manchmal die Anwendung für 20-30 Sekunden ohne Antwort einfrieren, und dann funktioniert es reibungslos danach.

Das Einfrieren ist nicht konsistent, und es gibt kein Muster oder einen bestimmten Grund, der es verursacht.

Ich vermute, dass könnte mein Modul sein, dass das Einfrieren verursacht. Aber zur gleichen Zeit haben viele andere Entwickler neuen Code in die Anwendung eingeführt.

Meine Frage gibt es eine Möglichkeit, diesen Einfrieren zu verfolgen? Gibt es eine Möglichkeit, das alte Modul und das neue Modul, das ich geschrieben habe, zu vergleichen?

Ich kann die Anwendung mit meinem Modul ausführen und die Anwendung verfolgen, und dann kann ich die Konfigurationsdatei ändern, um das alte Modul zu laden. Gibt es eine Möglichkeit, zwischen den beiden zu vergleichen?

Sollte ich Profiling tun? und wenn Profiling hilft, was soll ich dann suchen? jedes andere Werkzeug könnte helfen?

Vielen Dank für jede Antwort

Antwort

1

Es klingt wie Sie sind eine lange laufenden Betrieb auf dem UI-Thread zu tun. Machst du irgendwelche Datenbank-/Webservice-Aufrufe vom Haupt-Thread? Ich denke, eines der einfachsten Dinge zu tun ist, es im Debugger zu starten, und wenn es einfriert, klicken Sie auf die Schaltfläche "Pause". Visual Studio wird die Ausführung am aktuellen Speicherort anhalten und Sie können prüfen, was so lange dauert.

Wenn das Problem dort nicht sofort offensichtlich ist, würde ich definitiv beginnen, die Anwendung zu profilieren, um dies zu verfolgen.