Ich habe eine WPF-App, die einen Kompass zeichnet. Es gibt einen großen Ring mit Häkchen und Etiketten. Ich habe eine Checkbox, die die Kompassgrafik ein- und ausschaltet. Wenn ich die App zum ersten Mal starte, schaltet sich der Kompass sofort ein und aus.Warum dauert es länger, Grafiken zu wechseln, nachdem eine Auswahl aus einem Kombinationsfeld getroffen wurde?
In der Zwischenzeit habe ich eine Combo-Box, die einige Daten aus einer lokalen Datenbank ergreift und diese verwendet, um einige Overlay-Grafiken zu rendern. Nach Verwendung dieses Kombinationsfelds schalten die Kompassgrafiken nicht mehr schnell um. Tatsächlich friert die Benutzeroberfläche für etwa 4 Sekunden vollständig ein, wenn ich auf das Kontrollkästchen klicke.
Ich habe versucht, meine App mit Window Performance Profiling Tool für WPF zu profilieren. Als ich das Kontrollkästchen aktivierte, erstarrte nicht nur meine App, sondern auch der Profiler. Die Graphiken "fingen" danach auf, aber das sagt mir, dass etwas sehr falsch sein muss.
Ich habe festgestellt, dass das Problem Grafiken sind die Teilstriche (nicht die numerischen Bezeichnungen). Wenn ich sie beseitige, hört das Gefrierproblem auf. Wenn ich sie von 360 auf 36 zähle, friert die App immer noch ein, aber für weniger Zeit. Egal wie viele Häkchen ich habe, sie schalten sich sofort um, wenn die App startet.
Meine Frage ist, Wie finde ich heraus, warum der Schalter für meine Kompass-Grafiken von Instant zu schrecklich langsam geht? Ich habe umfangreiche Profilerstellung und Debugging ausprobiert, und ich kann einfach keinen Grund finden, warum das Setzen der Sichtbarkeit auf einige Häkchen jemals dazu führen sollte, dass die App einfriert.
bearbeiten
Okay, ich habe alles aus meiner app nur das Nötigste beraubt haben, den Reißverschluss auf und lud es auf Sendspace. Hier ist der Link (es ist etwa 143K):
http://www.sendspace.com/file/n1u3yg
[. Hinweis: nicht versehentlich das Banner klicken, wird der reale Download-Link ist viel kleiner und niedriger auf der Seite]
Zwei Anfragen:
Sie tritt das Problem auf Ihrem Computer? Versuchen Sie, Compass.exe (in bin \ Release) zu öffnen und schnell auf das Kontrollkästchen zu klicken. Die Kompass-Markierungen sollten ohne Verzögerung ein- und ausgeschaltet werden. Wählen Sie dann ein Element aus dem Kombinationsfeld und versuchen Sie, das Kontrollkästchen erneut zu aktivieren. Auf meinem Rechner ist es sehr lückig, und nachdem ich das schnelle Klicken gestoppt habe, dauert es ein paar Sekunden, bis die Grafik aufholt.
Wenn Sie die Verzögerung erfahren, sehen Sie irgendetwas im Code, der dieses seltsame Verhalten verursachen könnte? Das Kombinationsfeld ist mit nichts verbunden. Warum sollte die Auswahl eines Elements die zukünftige Leistung anderer Grafiken im Fenster beeinträchtigen?
Ich denke, Sie sollten Code hochladen, wenn Sie eine Antwort wollen –
aber haben Sie nicht die Perfomance Flaschenhals gefunden? – Tigran
@Tigran, nur irgendwie. Ich weiß, dass die Tick-Markierungen ein Flaschenhals sind, aber ich weiß nicht, warum sie manchmal kein Flaschenhals sind. Was ich herausfinden möchte, ist, unter welchen Bedingungen sie ein Problem werden. – devuxer