C# WPF 动画CPU使用异常

问题描述 投票:0回答:3

我正在开发 WPF 应用程序,客户端报告 CPU 使用率极高 (90%)(而我无法重复该行为)。我已经追踪到这些线路。这是用于小型单 LED 控制(闪烁 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> 
c# wpf animation cpu-usage
3个回答
4
投票

您的客户端很可能没有硬件加速。今天(甚至昨天)的显卡应该足以渲染 WPF。告诉他更新他的显卡驱动程序。您还可以通过在 StoryBoard 上设置

Timeline.DesiredFrameRate="20"
(或者如果适合您则调低)来稍微调整动画。


2
投票

WPF 的动画和效果是计算密集型的。它们需要硬件加速才能顺利工作。这意味着需要一个像样的显卡才能玩得好。

您可以检查您的应用程序是否可以使用硬件加速,如此处所述,如果不能,请删除发光效果。
(或者只是简单化它,例如添加一个简单的白色矩形来代替它,或者类似的东西。)

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


0
投票

也许不是触发器的问题,实际效果,尝试删除所有效果以降低cpu

© www.soinside.com 2019 - 2024. All rights reserved.