C# WPF的高CPU使用率

C# WPF的高CPU使用率,c#,wpf,cpu-usage,C#,Wpf,Cpu Usage,在我的WPF项目中,如果我打开一个窗口,cpu使用率大约为30%-50%,但是当我最小化这个窗口时,cpu使用率下降到1%。有人知道原因吗?谢谢您的屏幕上有很多绑定(双向)吗?这可能会导致高cpu。 还是大量的动画 最终,您可以使用WPF performance suite来监控导致这种高CPU负载的原因:Rody的好文章,我只想添加一些内容,使用答案而不是注释,因为注释有最大限制 我还建议使用Ants Profiler,它有2周的试用期——足以了解发生了什么。另外,如果你发布一些代码,这里的人

在我的WPF项目中,如果我打开一个窗口,cpu使用率大约为30%-50%,但是当我最小化这个窗口时,cpu使用率下降到1%。有人知道原因吗?谢谢

您的屏幕上有很多绑定(双向)吗?这可能会导致高cpu。 还是大量的动画


最终,您可以使用WPF performance suite来监控导致这种高CPU负载的原因:

Rody的好文章,我只想添加一些内容,使用答案而不是注释,因为注释有最大限制

我还建议使用Ants Profiler,它有2周的试用期——足以了解发生了什么。另外,如果你发布一些代码,这里的人可以很快指出一些事情

例如,如Rudy所指出的,如果您有大量的绑定和动画,以及过于复杂的控件和控件模板。质疑堆栈面板在堆栈面板内、边框内不必要的组成…使用TextBlocks而不是标签,或者是否需要文本框,如果它们是只读的,请使用TextBlocks+border。ItemControl的项是否太复杂?等等

此外,Ants Profiler还可以向您显示“僵尸”对象。您是否正确地进行了处理,是否循环使用了对象,或者每次(例如,在为要显示的数据选择新的日期范围时)都创建了新的复杂结构,然后重新绑定到它们。如果你有数据网格单元,是否每个单元都需要一个昂贵的东西…一个弹出窗口和额外的边框。。如果为某种视觉效果在每个单元格周围创建边框,请将“因子”重新设置为只有一个边框,然后将其重新放置在网格上。 这个名单还可以继续下去

长话短说——WPF是一只猪:所以你可能必须精简一些东西,或者/或者更具创造性地以更少的开销保持事物的美观


注意,不要忘记发布一些代码…

这是不够的信息。既然我们在这里猜测,我猜你有一个动画在运行;由于某种原因,计算起来很困难。我记得我第一次尝试“加载指示器”(loading indicator)——在后台加载内容时旋转的微调器需要整个核心进行渲染。我把它放在里面了,真是讽刺。哇,ants performance profiler确实是一个很棒的提示!谢谢