Nic*_*ick 18 c# wpf performance
我们有一个用.Net 4.0编写的C#WPF应用程序,它有一些相对简单的数据绑定和网格功能.
造型包括一些"调整",包括一些悬停颜色等.
在包含20个部署的3台机器上,我们遇到了一些非常奇怪的UI性能问题.
实际上,重新启动后应用程序运行良好,但在一定(未确定)的时间后,UI变得非常缓慢.例如,将鼠标悬停在按钮上,在应用/渲染悬停颜色样式之前,将会延迟几秒钟.
这些机器的规格几乎相同.图形驱动程序已更新,标准设置为两个NVidia Quadro 290卡.另外,我们制作了一个"测试"应用程序,其中只包含一些测试UI组件(包括Fluent功能区),后面没有代码.问题仍然存在.
我已经运行Windows性能套件来"深入"运行时WPF,而且非常奇怪的是,如果勾选了"禁用脏区支持"选项,则UI将恢复正常响应.我的理解是,如果有的话,这应该会进一步降低性能!
我在这里尝试其他任何东西.DotTrace性能分析表明,大部分应用程序时间都花在了PresentationFramework.dll上.
[编辑]所有机器都是Windows XP SP3.
[编辑]这可能发生在所有机器上,并且通常不允许应用程序运行足够长的时间来呈现问题.我们现在正在测试这个.
[编辑]我还应该指出,我们正在尝试这里详述的修补程序.它暂时安装在一台机器上,我会相应更新.
[编辑 - 24小时后]所以两台机器现在一夜之间运行相同的代码.在我的机器上(从未表现出问题),在初始登录后,应用程序非常缓慢,但不到一分钟后恢复正常.(我把它放到机器上清楚地从硬盘上取下东西).在另一台机器上(通常表明问题),应用程序在几秒钟后得到改善,但与我的相比现在仍然缓慢.
[编辑 - 48小时后]在测试机器上,测试应用程序现在在运行48小时后完全没有响应(锁定).在同一台机器上,一个轻量级的"shell"WPF应用程序(包含一个选项卡控件,一些按钮和一些面板和网格)仍在运行并且响应速度非常快.因此,在这些更复杂的控件中出现的问题导致了这个问题......这确实指向可能是根本原因的(可能)触发器和委托.我将再次介绍应用程序/控件.与此同时,是否有人建议如何确保应用程序定期"清理"?因为我们在这里看第三方控件,所以我编辑它们的选项有限!
非常感谢可以提供的任何提示!
小智 2
尝试在软件模式下渲染wpf。
在加载事件中:
HwndSource hwndSource = PresentationSource.FromVisual(this) as HwndSource;
HwndTarget hwndTarget = hwndSource.CompositionTarget;
hwndTarget.RenderMode = RenderMode.SoftwareOnly;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2136 次 |
| 最近记录: |