C#WPF动画的CPU使用异常

时间:2010-05-24 20:49:45

标签: c# wpf animation cpu-usage

我正在开发WPF应用程序和客户端报告极高的CPU使用率(90%)(而我无法重复该行为)。我已经将bootleneck追溯到这些行。这是一个简单的发光动画,用于小型单控制控制(闪烁LED)。这个简单的动画会占用大量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> 

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

WPF的动画和效果是计算密集型的。它们需要硬件加速才能顺利运行。这意味着需要一个像样的显卡才能很好地播放。

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

我曾经写过一个简单的应用程序,它广泛使用了各种各样的效果和动画,并且在普通的机器上几乎无法使用。我愚弄了效果,一切都变得顺畅了。