2010-05-24 4 views
1

Je développe des rapports d'application et de client WPF extreamly haute utilisation du processeur (90%) (alors que je suis incapable de répéter ce comportement). J'ai tracé le goulot d'étranglement jusqu'à ces lignes. C'est une animation simple et lumineuse pour un petit contrôle à led unique (led clignotante). Quelle pourrait être la raison de cette annimation simple prenant tant de ressources CPU énormes?C# WPF utilisation anormale du processeur pour l'animation

  <Trigger Property="State"> 
      <Trigger.Value> 
       <local:BlinkingLedStatus>Blinking</local:BlinkingLedStatus> 
      </Trigger.Value> 
      <Trigger.EnterActions> 
       <BeginStoryboard Name="beginStoryBoard"> 
        <Storyboard> 
         <DoubleAnimation Storyboard.TargetName="glow" Storyboard.TargetProperty="Opacity" AutoReverse="True" From="0.0" To="1.0" Duration="0:0:0.5" RepeatBehavior="Forever"/> 
        </Storyboard> 
       </BeginStoryboard> 
      </Trigger.EnterActions> 
      <Trigger.ExitActions> 
       <StopStoryboard BeginStoryboardName="beginStoryBoard"/> 
      </Trigger.ExitActions> 
     </Trigger> 

Répondre

3

Il est probable que votre client ne dispose pas d'accélération matérielle. Les cartes graphiques d'aujourd'hui (et même d'hier) devraient suffire à rendre WPF. Dites-lui de mettre à jour ses pilotes graphiques. Vous pouvez également ajuster votre animation en réglant Timeline.DesiredFrameRate="20" (ou plus bas si cela vous convient) sur votre StoryBoard.

+0

J'ai essayé ça, mais l'usage n'a que peu diminué! Le fait est que ce composant est vraiment petit (50x50 pixels). Evens avec fps 30 il a rapporté, que l'utilisation du processeur est encore de 70%. C'est beaucoup mieux pour blinkig 50x50 square ...:/ –

+0

Avez-vous vérifié le matériel GPU (et ses pilotes)? – bitbonk

2

Les animations et les effets de WPF sont gourmands en ressources. Ils nécessitent une accélération matérielle pour fonctionner correctement. Cela signifie qu'il faut une carte graphique décente pour bien jouer.

Vous pouvez vérifier si votre application peut utiliser l'accélération matérielle as described here et supprimer l'effet de lueur si ce n'est pas le cas.
(Ou tout simplement muet vers le bas, par exemple ajouter un simple rectangle blanc au lieu de, ou quelque chose comme ça.)

J'ai écrit une application simple qui largement utilisé toutes sortes d'effets et d'animations, et il était à peine utilisable sur une machine moyenne. J'ai baissé les effets, et tout est devenu lisse.

Questions connexes