Wpf 我如何找到什么';他正在使用我的应用程序中的所有CPU
我有一份WPF申请。大多数情况下,该应用程序几乎不使用CPU。这很好。但我有一个在特定情况下弹出的窗口。根据我在VisualStudio中运行的性能分析,我的代码没有使用太多CPU,Application.run方法是。其中大部分都在“Functon Body”中。大约占CPU的40-50% 我如何计算出什么在使用CPU?我有一些使用关键帧的动画,可以为一些东西的颜色设置动画。我想知道他们是不是在消耗CPU。我知道我可以暂时删除它们,而且我可能会删除,但是有没有其他方法可以准确地找出是什么在消耗CPU 托尼 PS:为了向自己证明这是动画,我在TaskManager中观看了我程序的CPU使用情况。在显示带有动画的窗口之前大约是0。窗口显示&CPU启动了。然后我按下了一个按钮,改变了数据的状态&有停止动画的副作用。CPU返回到0。我重复了几次,结果一致。对我来说好像是动画。虽然有一种可能性,它是其他的东西,也正在进行的同时,动画 这些动画是用于模拟闪光灯的关键帧动画。我将转储关键帧动画,并使用计时器在两种颜色之间交换填充笔刷颜色 PS:如果有人感兴趣,我对WPF动画做了一些研究,发现WPF中至少有两种不同的彩色动画关键帧类。我正在使用的LinearColorKeyFrame,在动画的持续时间内,不断地改变颜色,从任何颜色变为您想要的颜色。另一个是离散颜色关键帧。这会立即将颜色从原来的颜色更改为您想要的颜色 因此,我根据以下内容编辑了我的动画:Wpf 我如何找到什么';他正在使用我的应用程序中的所有CPU,wpf,performance,Wpf,Performance,我有一份WPF申请。大多数情况下,该应用程序几乎不使用CPU。这很好。但我有一个在特定情况下弹出的窗口。根据我在VisualStudio中运行的性能分析,我的代码没有使用太多CPU,Application.run方法是。其中大部分都在“Functon Body”中。大约占CPU的40-50% 我如何计算出什么在使用CPU?我有一些使用关键帧的动画,可以为一些东西的颜色设置动画。我想知道他们是不是在消耗CPU。我知道我可以暂时删除它们,而且我可能会删除,但是有没有其他方法可以准确地找出是什么在消耗
<Storyboard x:Key="FlashingStoryboard" AutoReverse="True" RepeatBehavior="Forever">
<ColorAnimationUsingKeyFrames BeginTime="00:00:00"
Storyboard.TargetName="Flasher"
Storyboard.TargetProperty="(Shape.Fill).(SolidColorBrush.Color)">
<LinearColorKeyFrame KeyTime="00:00:00.5"
Value="{Binding Path=FlashColor, RelativeSource={RelativeSource AncestorType={x:Type local:Flasher}}}"/>
</ColorAnimationUsingKeyFrames>
<DoubleAnimation Duration="00:00:00.5"
From="0" To="10"
Storyboard.TargetName="FlasherBlur"
Storyboard.TargetProperty="Radius">
</DoubleAnimation>
</Storyboard>
为此:
<Storyboard x:Key="FlashingStoryboard" AutoReverse="True" Duration="00:00:00.5" RepeatBehavior="Forever">
<ColorAnimationUsingKeyFrames BeginTime="00:00:00"
Storyboard.TargetName="Flasher"
Storyboard.TargetProperty="(Shape.Fill).(SolidColorBrush.Color)">
<DiscreteColorKeyFrame KeyTime="00:00:00.25"
Value="{Binding Path=FlashColor, RelativeSource={RelativeSource AncestorType={x:Type local:Flasher}}}" />
</ColorAnimationUsingKeyFrames>
</Storyboard>
新的动画使用更少的CPU。事实证明,DoubleAnimation占用了大部分CPU使用,它产生了发光效果。它几乎占用了1/2的CPU!根本不值得。即使我去掉了它,CPU的使用率仍然平均在15%左右。将其切换到离散帧使其下降到10%以下
还有另一个类似的动画,在同一窗口中的列表框中的项目周围设置边框动画。我做了同样的更改,现在CPU的使用是可以接受的。我不太清楚它是什么,但它比以前好多了
谢谢。是的,动画是任何人都会告诉你的第一件事。还有它有多大?是直达的吗?相对大的屏幕块,然后耶 您需要进行代码分析,看看什么消耗了最多的CPU资源,也许可以这样调整
您可以阅读更多关于.NET评测的信息grab ANTS performace profiler,它的前两周是免费的,比您需要的时间更长,这是一个很棒的工具