【问题标题】:WPF performance issue due to UI Automation由于 UI 自动化导致的 WPF 性能问题
【发布时间】:2011-08-08 15:13:26
【问题描述】:

我遇到了this thread 中描述的问题。

dotTrace 告诉我“Stylus Input”是有罪的。

我尝试了Ron ZChaim Zonnenberg发布的the code,但没有成功。

Rash 建议 2 个解决方法:

  1. 只有在机器中运行任何自动化客户端(如屏幕阅读器、平板电脑中的 tabtip 等)时才会触发自动化代码。因此,摆脱这种情况的一种方法是关闭任何这些自动化客户端应用程序。

  2. 如果一个不可行,那么另一种选择是 UIElementHelper.InvalidateAutomationAncestors 仅当应用程序的自动化树稀疏(如果使用自定义窗口自动化对等体禁用了楼宇自动化树时发生)且可视化树为稠密。所以另一个解决方案是禁用任何自定义自动化代码并允许 WPF 构建完整的自动化树。这也应该加快 UIElementHelper.InvalidateAutomationAncestors 的速度。

但是如何关闭标签提示?我尝试停止并禁用以下服务但没有成功,tabtip.exe 仍在后台运行:

  • 平板电脑输入服务
  • TabletServicePen

Rash 说这个问题应该在 .NET 4.0 SP1 中解决。谁知道.NET 4.0 SP1 的发布日期?

我正在使用 Visual Studio 2010、Windows 7 64 位、Wacom Graphire 4。

谢谢


更新

要关闭 tabtip.exe,我只需要在禁用上述服务后重新启动 Windows。但仅此一项并不能解决我的问题。为了解决性能问题,我还必须禁用“Wacom Consumer Touch Service”。

根据this thread(2011 年 3 月 22 日):

there is no published timeline for .NET Framework 4.0 sp1

【问题讨论】:

    标签: .net wpf performance


    【解决方案1】:

    我最近不得不在我们的项目中使用 WPF 工具来处理这个确切的问题。

    发生崩溃的机器正在运行 .NET Framework 4.5。

    当工具崩溃时,我们可以看到崩溃发生在 .NET PresentationFramework UIAutomation 中。 崩溃异常是:PresentationFramework.dll 中出现“System.ArgumentOutOfRangeException”类型的第一次机会异常 --> 此时该错误似乎在 .NET Framework 中

    但随后我们可以看到我们在 UIAutomation 调用中崩溃的堆栈,这导致我们进入该线程并认为该模块正在由 Wacom 服务触发。

    在应用程序崩溃的机器上运行的 Wacom 驱动程序是:Wacom Tablet 6.3.1w3 降级到以前的版本后,一切都开始工作了:WacomTablet_6.3.3-4

    既然我们知道了问题的根源,我们开始寻找一种解决方法,以便能够仍然使用最新的驱动程序。 所以它就在这里,而且它似乎不会影响 wacom 数位板的功能: - 转到控制面板。 - 双击程序和功能 - 单击左侧标题为打开或关闭 Windows 功能的链接 - 加载时,取消选中“Tablet PC Optional Components”(在 Windows 7 中可能称为“Tablet PC Components”)。 - 单击确定按钮。 这可能需要您重新启动 Windows 机器。

    这对我们有用。

    玩得开心!

    【讨论】:

      猜你喜欢
      • 2013-04-04
      • 2011-09-15
      • 2011-10-19
      • 2014-08-02
      • 2020-06-27
      • 1970-01-01
      • 2013-04-01
      • 2019-04-13
      • 2019-06-17
      相关资源
      最近更新 更多