2010-05-24 59 views
1

我正在开发WPF应用程序和客户端报告extreamly高CPU使用率(90%)(但我无法重复该行为)。我已经追踪到了这些线。这是简单的发光动画小单led控制(闪烁led)。这个简单的注解占用了大量的CPU资源可能是什么原因?C#WPF异常动画CPU使用率

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

回答

3

很可能您的客户端没有硬件加速功能。今天(甚至昨天)的图形卡应该足以呈现WPF。告诉他更新他的图形驱动程序。您也可以通过在StoryBoard上设置Timeline.DesiredFrameRate="20"(或更低,如果适用于您)来调整动画。

+0

我试过了,但是使用量只是减少了!问题是,这个组件很小(50x50像素)。据他所报道的fps 30的Evens说,cpu的使用率仍然是70%。对于blinkig 50x50方块来说,这太可怕了...:/ – 2010-05-25 05:00:43

+0

您是否检查过GPU硬件(及其驱动程序)? – bitbonk 2010-05-25 07:12:27

2

WPF的动画和效果是计算密集型的。他们需要硬件加速才能顺利运行。这意味着需要一块体面的显卡来播放。

您可以检查您的应用程序是否可以使用硬件加速as described here,并删除发光效果。
(或只是哑下来,例如添加一个简单的白色矩形,而不是它,或者类似的东西。)

我曾经写了广泛使用各种特效和动画一个简单的应用程序,它是几乎没有在一台普通机器上可用。我弄虚作假,一切都变得顺利。