【问题标题】:Why is my WPF application slow on certain systems为什么我的 WPF 应用程序在某些系统上运行缓慢
【发布时间】:2011-07-13 12:29:39
【问题描述】:

我的 WPF 应用程序的 UI 在某些系统上的性能存在问题。在我的开发人员系统上,它表现得很好,但在某些其他系统上,性能真的很差。出现问题,例如在移动拆分器、调整 FlowDocument 大小或将鼠标悬停在按钮上时。

性能差异与计算机明显的“规格”没有直接关系。该应用程序在上网本(Intel Atom N550,1GB RAM,Windows 性能指数:2.0)上运行良好,但在台式计算机(I7 2600,8GB Ram,ATI Radeon HD 5700,Windows 性能指数:7.4)上运行良好。两个系统都运行 Windows 7。 该应用程序是使用 .NET 4.0 构建的。我尝试使用 RenderOptions.ProcessRenderMode = RenderMode.SoftwareOnly 强制软件渲染。然而,这根本没有区别。

是什么导致了这个问题?我该如何解决?

【问题讨论】:

  • 两个问题,首先是容易忽略的,是 ATI 的慢速 pc 驱动程序还是使用“正常工作”的 Windows 7 驱动程序?其次,您是否使用任何自定义或第 3 方 UI 控件?
  • 问题可能出在特定版本的显示驱动程序和驱动程序供应商中
  • 您在这些机器上安装了哪些版本的 Windows 7?我在 Windows 7 Ultimate 上遇到了一些 WPF 性能问题,在同一台机器上安装 Windows 7 Enterprise 后它就消失了。
  • 关于驱动程序:如果我设置 RenderOptions.ProcessRenderMode = RenderMode.Software。这不是意味着渲染是由软件完成的,而不是由硬件完成的吗?驱动程序是否仍然是一个问题?
  • 我正在使用来自 DevExpress 的 3rd 方组件。

标签: .net wpf performance


【解决方案1】:

这听起来可能是我们被刺痛的 Wpf 4 错误,它影响了具有复杂 Wpf 视觉树的应用程序。在此线程http://social.msdn.microsoft.com/Forums/en/windowsaccessibilityandautomation/thread/6c4465e2-207c-4277-a67f-e0f55eff0110 中对此进行了讨论。它甚至影响了 VS 2010 中的 Workflow 4 设计器 - 请参阅 http://social.msdn.microsoft.com/Forums/en/wfprerelease/thread/1f20c37f-1b9e-4b6d-904f-a6b518e4187a。根据该线程,您可能想尝试一个修补程序:http://support.microsoft.com/kb/2484841

您可以通过在应用挂起/卡顿时将调试器附加到应用并查看是否在堆栈上看到大量 UiAutomation InvalidateAutomationAncestors 帧来了解这是否是问题所在。

【讨论】:

  • @FromTheMountain,你有没有解决这个问题?安装热修复是否有效?请评论,我也有同样的问题。
  • 更新到 .NET 4.5 是否解决了问题?
  • @RayL - 我正在使用 4.5,但我仍然遇到这个问题。我也无法安装 KB2484841。我敢打赌,它已经滚入我已经拥有的更高版本的 dll 中。但就像我说的,我仍然遇到复杂的可视化树控件的自动化问题。
【解决方案2】:

也许是 x64 与 x86 的问题?将平台目标设置为 Any CPU。

【讨论】:

  • 我也想过这个。我确实设置为x86。不幸的是,将其设置为 Any CPU 并不能解决问题。
  • 我们自己的一些应用在 x64 机器上构建到“任何 CPU”时遇到问题 - 您是否尝试为 x64 构建特定的版本?
猜你喜欢
  • 2019-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多