我正在开发WPF应用程序,客户端报告CPU使用率极高(90%)(而我无法重复这种行为)。我追踪到了这几行。这是简单的发光动画小单led控制( Flink 的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>
3条答案
按热度按时间nwlls2ji1#
WPF的动画和效果是计算密集型的。它们需要硬件加速才能顺利工作。这意味着它需要一个像样的显卡才能玩得很好。
您可以检查您的应用是否可以使用硬件加速as described here,如果不能,则移除光晕效果。
(Or只是使其简单化,例如添加一个简单白色矩形来代替它,或类似的东西。)
我曾经写过一个简单的应用程序,广泛使用各种效果和动画,它几乎不能在普通机器上使用。我简化了效果,一切都变得顺利。
06odsfpq2#
可能不是触发器的错误,实际效果,尝试删除所有效果以降低CPU
a64a0gku3#
很可能您的客户端没有硬件加速。今天(甚至昨天)的显卡应该足以渲染WPF。告诉他更新他的显卡驱动。您还可以通过在StoryBoard上设置
Timeline.DesiredFrameRate="20"
(或更低,如果适合您)来调整动画。