Frage

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):

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:sys="clr-namespace:System;assembly=mscorlib" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" >
    <Border Name="MyBorder" BorderThickness="10" BorderBrush="Blue" CornerRadius="10" Background="DarkRed" >
       <Rectangle Name="MyRectangle" Margin="10" StrokeDashArray="2.0,1.0" StrokeThickness="10" RadiusX="10" RadiusY="10" Stroke="Black" StrokeDashOffset="0">
           <Rectangle.Triggers>
               <EventTrigger RoutedEvent="Rectangle.Loaded">
                   <BeginStoryboard>
                       <Storyboard>
                           <DoubleAnimation Storyboard.TargetName="MyRectangle" Storyboard.TargetProperty="StrokeDashOffset" From="0.0" To="3.0" Duration="0:0:1" RepeatBehavior="Forever" Timeline.DesiredFrameRate="30" />
                       </Storyboard>
                   </BeginStoryboard>
               </EventTrigger>
           </Rectangle.Triggers>
       </Rectangle>
    </Border>
</Page>

Es hat den Effekt, dass die Grenze im Rechteck animiert wird. Nach einem neuen Neustart der Maschine ist diese Animation schön und glatt. Ich neige jedoch dazu, meine Maschine die ganze Zeit auf und nach einem Zeitraum (ich weiß nicht, wie lange ich weiß), beginnt die Animation zu stottern und wird abgehackt.

Ich dachte, dass es sich um Speicher- oder Ressourcenprobleme handeln kann, aber nachdem ich alle anderen Apps und Dienste, die unnötig erscheinen, geschlossen habe, wird das Stottern immer noch fortgesetzt. Nach einem Neustart eines Systems ist die Animation jedoch wieder reibungslos!

Ich bekomme die gleichen Symptome in einer WPF -App oder in Xamlpad. Im Fall der App scheint es keinen Unterschied zu machen, ob ich im Debugger ausführe oder ob ich die ausführbare Datei direkt ausführe.

Ich habe den Patch unter diesem Link angewendet: http://support.microsoft.com/kb/981741 Und ich dachte, es hätte sich um das Problem gekümmert, aber es scheint nicht zu haben.

Ich habe einige Beiträge gesehen, die darauf hinweisen, dass die Verwendung von Transparenz die Animation beeinflussen kann. Wie Sie sehen können, verwendet mein XAML jedoch keine Transparenz.

Kann mir jemand einige Vorschläge geben, wie man bestimmen kann, was das Problem ist? Gibt es WPF -Diagnosewerkzeuge, die helfen könnten?

Update: Ich habe meine Video -Treiber überprüft und sie sind die neueste Version. (Nvidia Geforce 8400 GS)

War es hilfreich?

Lösung

Nachdem ich Ihre Animation für ein bisschen mehr als einen Tag lang ausgeführt habe, sehe ich nichts wirklich Schreckliches, obwohl die Erinnerungsnutzung ein wenig gestiegen ist.

Am Ende habe ich Ihr Beispiel auf XP SP3 in Kaxaml ausgeführt und dann mit Perfmon einige arme Mannschaftsüberprüfungen durchgeführt.

Wenn Sie Perfmon noch nie verwendet haben, rennen Sie einfach -> Perfmon aus dem Startmenü. Es wird wahrscheinlich ein paar Zähler in der Liste erstellen, aber Sie können auf jeden klicken und sie löschen, wenn Sie diese Werte nicht überwachen möchten. Ich glaube nicht, dass die CPU -Auslastung in Ihrem Fall das Problem ist, aber Sie können sie nur für den Fall behalten.

Klicken Sie mit der rechten Maustaste und wählen Sie "Zähler hinzufügen" und dann unter "Performance -Objekt" auswählen ".NET CLR -Speicher". Wählen Sie rechts die ausführbare Datei von Interesse aus (in meinem Fall ist es "Kaxaml"). Wählen Sie auf der linken Seite "# Bytes in allen Haufen". Ich würde auch die Stichprobenrate auf etwas Größeres ändern, z.

Dies hilft Ihnen möglicherweise nicht dabei, die Verlangsamung zu finden, aber es ist ein vernünftiger erster Schritt. Vielleicht sollten Sie auch den Profiler von Ants 5 herunterladen, um zu sehen, ob es etwas Seltsames fängt.

Andere Tipps

Ich habe die Animation weit über 30 Stunden laufen lassen und sie hat sich nicht verlangsamt oder ist abgehackt geworden, aber ich laufe Win 7. Ich lasse es mehrere Stunden lang in einem XP -VM laufen und es läuft gut.

Meine beste Vermutung: Videotreiber

Begründung: Der Videotreiber ist der komplexeste Treiber in Ihrem System und hat viel mit der Gesamtleistung Ihres Computers zu tun. Es ist zwar möglich, dass der Animations -Versand -Timer zurückliegt, es sei denn, Sie verwenden eine Menge CPU, ist es unwahrscheinlich.

Anregungen:

  • Überprüfen Sie nach einem Treiber -Update
  • Probieren Sie eine andere Grafikkarte aus (wenn möglich)
  • CRACK FORFMON Offen und schnappen Sie sich jeden WPF- und DirectX -Zähler und überwachen Sie im Laufe der Zeit

Ich denke, mit WPF werden Sie auf Maschinen stoßen, die nicht sehr gut machen. Ich habe es auf meinem Laptop ausprobiert und es war in Ordnung.

Haben Sie Internetbrowser geöffnet? Ich hatte ein ähnliches Problem auf einer Animation, in der ich lief, wo es abgehackt war ... nichts wirklich Schreckliches, es war einfach spürbar und nervig, als wäre es eine halbe Sekunde oder so Mikrostutter ...

Bei einer Ahnung schloss ich Google Chrome, das ich geöffnet hatte und das Stottern vollständig gelöst hatte. Wenn Sie beim Ausführen von Webbrowsern geöffnet sind, versuchen Sie, sie zu schließen und zu prüfen, ob es hilft, es hat bei mir funktioniert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top