WPF Windows-XP SP3
Ich habe ein Problem mit einer einfachen WPF-Animation.
Ich verwende den folgenden Xaml-Code (in XamlPad und auch in einem WPF-Projekt):
%Vor%Es bewirkt, dass der Rahmen um das Rechteck animiert wird. Nach einem Neustart des Rechners ist diese Animation gut und flüssig. Allerdings lasse ich meine Maschine ständig an und nach einer gewissen Zeit (ich weiß nicht wie lange) beginnt die Animation zu stottern und wird unruhig.
Ich dachte, es könnten Speicher- oder Ressourcenprobleme sein, aber nach dem Herunterfahren aller anderen Anwendungen und Dienste, die unnötig erscheinen, geht das Stottern weiter. Nach einem Systemneustart ist die Animation jedoch wieder reibungslos!
Ich erhalte die gleichen Symptome in einer WPF-App oder in XamlPad. Bei der App scheint es keinen Unterschied zu machen, ob ich im Debugger laufe oder die ausführbare Datei direkt ausführe.
Ich habe den Patch unter diesem Link angewendet: Ссылка und ich dachte, dass es sich um das Problem gekümmert hat, aber es scheint nicht zu haben.
Ich habe einige Posts gesehen, die darauf hindeuten könnten, dass die Verwendung von Transparenz sich auf die Animation auswirken kann. Wie Sie jedoch sehen, verwendet mein xaml keine Transparenz.
Kann mir jemand einige Vorschläge geben, wie ich das Problem bestimmen kann? Gibt es WPF-Diagnosetools, die helfen könnten?
UPDATE: Ich habe meine Videotreiber überprüft und sie sind die neueste Version. (nVidia GeForce 8400 GS)
Nachdem ich die Animation ein wenig über einen Tag abgespielt habe, sehe ich nichts wirklich Schreckliches, obwohl die Speicherauslastung etwas gestiegen ist.
Was ich am Ende getan habe, war, dein Beispiel auf XP SP3 in kaxaml auszuführen und dann die Leistung eines armen Mannes mit perfmon zu prüfen.
Wenn Sie noch nicht perfmon benutzt haben, führen Sie einfach Run - & gt; Perfmon aus dem Startmenü. Es wird wahrscheinlich einige Zähler bereits in der Liste erscheinen, aber Sie können auf jedes klicken und sie löschen, wenn Sie diese Werte nicht überwachen möchten. Ich denke nicht, dass die CPU-Auslastung in Ihrem Fall das Problem ist, aber Sie können es dort für alle Fälle aufbewahren.
Klicken Sie mit der rechten Maustaste auf eine beliebige Stelle und wählen Sie "Counter hinzufügen". Wählen Sie unter "Performance-Objekt" ".NET CLR Memory". Auf der rechten Seite wählen Sie die ausführbare Datei von Interesse (in meinem Fall ist es "Kaxaml"). Wählen Sie auf der linken Seite "# Bytes in allen Heaps". Ich würde auch die Abtastrate auf etwas Größeres, wie 300 Sekunden, ändern, damit Sie eine bessere Vorstellung von der Änderungsrate über den Zeitraum bekommen, in dem Sie die Verlangsamung erleben.
Das hilft vielleicht nicht, die Verlangsamung zu finden, aber es ist ein vernünftiger erster Schritt. Vielleicht sollten Sie auch die Testversion von ANTS 5 Profiler herunterladen, um zu sehen, ob etwas Ungewöhnliches auffällt.
Ich habe die Animation für weit über 30 Stunden laufen lassen und sie ist nicht langsamer geworden oder abgehackt, aber ich habe Win 7. Ich lasse es auch mehrere Stunden in einer XP-VM laufen und es läuft gut .
Meine beste Vermutung: Videotreiber
Begründung: Der Grafiktreiber ist der komplexeste Treiber in Ihrem System und hat viel mit der Gesamtleistung Ihres Computers zu tun. Es ist zwar möglich, dass der Zeitgeber für die Animationsübertragung zurückbleibt, es sei denn, Sie verwenden viel CPU, aber das ist unwahrscheinlich.
Vorschläge:
Haben Sie Internetbrowser geöffnet? Ich hatte ein ähnliches Problem mit einer Animation, die ich gerade lief, wo es abgehackt war ... nichts wirklich Schreckliches, es war nur auffällig und nervig, als ob es jede halbe Sekunde stottern würde ...
Ich habe aus Google Chrome geschlossen, dass ich geöffnet und das Stottern vollständig gelöst habe. Wenn Sie einen Webbrowser geöffnet haben, während Sie ihn ausführen, versuchen Sie, sie zu schließen und zu sehen, ob es hilft, es hat für mich funktioniert.
Tags und Links wpf animation performance windows-xp-sp3