首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >WPF C#应用程序性能

WPF C#应用程序性能
EN

Stack Overflow用户
提问于 2012-01-11 19:51:26
回答 2查看 2.2K关注 0票数 18

我们有一个用.Net 4.0编写的C# WPF应用程序,其中包含一些相对简单的数据绑定和网格功能。

样式包含了一些“调整”,包括一些悬停颜色等。

在3台机器上,在覆盖20台的部署中,我们遇到了一些非常奇怪的UI性能问题。

实际上,在重新启动后,应用程序运行良好,但经过一段时间后,UI会变得非常缓慢。例如,将鼠标悬停在按钮上,在应用/渲染悬停颜色样式之前,会有长达几秒钟的延迟。

这些机器的规格几乎是一样的。显卡驱动程序已更新,标准设置为两个NVidia Quadro290卡。另外,我们制作了一个“测试”应用程序,只包含一些测试UI组件(包括Fluent Ribbon),没有任何代码。问题仍然存在。

我已经运行了Windows Performance Suite来“深入研究”运行时WPF,非常奇怪的是,如果勾选了“Disable Dirty Region Support”选项,UI就会恢复正常响应。我的理解是,如果有的话,这应该会进一步降低性能!

在这里,我不知道还有什么可以尝试的。DotTrace性能分析表明,大部分应用程序时间都花在PresentationFramework.dll上。

EDIT所有计算机都是Windows XP SP3。

EDIT可能在所有机器上都会发生这种情况,并且通常不允许应用程序运行足够长的时间来出现问题。我们现在正在测试这一点。

编辑我还应该指出的是,我们正在试验热修复详细的here。目前它已经安装在一台机器上,我将相应地进行更新。

编辑- 24小时后执行,这样两台机器就可以在一夜之间运行相同的代码。在我的机器上(从来没有演示过这个问题),在应用程序中初始登录后非常慢,但不到一分钟后就恢复正常了。(我把这归因于机器清楚地从硬盘上取下了东西)。在另一台机器上(通常会显示问题),应用程序在几秒钟后有所改善,但与我的相比,现在仍然很慢。

编辑- 48小时后在测试计算机上执行,测试应用程序在运行48小时后完全无响应(锁定)。在同一台机器上,一个轻量级的“外壳”WPF应用程序(包含一个选项卡控件,一些按钮和一些面板和网格)仍然在运行,并且响应良好。所以这些更复杂的控件中的某些东西导致了这个问题。这确实指向了(潜在的)可能是根本原因的触发器和委托。我将再次分析应用程序/控件。同时,有没有人对如何确保应用程序定期“清理”自己有什么建议呢?因为我们在这里查看的是第三方控件,所以我编辑它们的选择是有限的!

感谢任何可以提供的提示!

EN

回答 2

Stack Overflow用户

发布于 2012-01-11 20:59:44

尝试在软件模式下呈现wpf。

在已加载事件中:

HwndSource hwndSource = PresentationSource.FromVisual(this) as HwndSource;
HwndTarget hwndTarget = hwndSource.CompositionTarget;
hwndTarget.RenderMode = RenderMode.SoftwareOnly;
票数 2
EN

Stack Overflow用户

发布于 2012-01-13 17:07:34

在比较开发人员计算机和用户计算机之间的性能时,需要考虑的是加载WPF程序集所需的时间。

在dev计算机上,您可能已经运行了visual studio,或者以前已经运行过其他WPF应用程序,并且这些程序集在您运行应用程序时应该都已加载。

在用户机器上,可能是刚刚重新启动的,程序集将在应用程序启动时加载,这使得启动速度明显变慢。第一次使用各种功能/页面时,可能会加载额外的程序集,这取决于应用程序的设置方式。

我发现EQUATEC profiler在调试这些性能问题时非常有用。在构建您的项目之前,在应用程序选项中将分析更改为“完整的常规信息”,这将分析到绑定级别。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8818761

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档