【问题标题】:WPF UI Automation issueWPF UI自动化问题
【发布时间】:2011-09-15 18:48:00
【问题描述】:

此主题属于this

我在问我需要在哪里插入来自this 的解决方法

我有一个 WPF 应用程序,它在某些使用 Windows 7 的客户端上存在性能问题。在 Windows XP 上,一切都运行得很快。该应用程序有一个 MainShell 和一些子窗口。 MainShell 有时会在某些机器上挂起,子窗口也是如此。现在,我是否必须在所有窗口中从上述链接的线程中插入解决方法? 还有其他解决方法吗?

【问题讨论】:

    标签: c# wpf performance ui-automation


    【解决方案1】:

    我一直在开发一个应用程序,该应用程序几乎在所有方面都很好,但 WPF 控件在某些笔记本电脑(联想)上速度很慢。它滞后和冻结,通常会抑制使用。

    我做了以下事情:

    1. 实现了上面的代码:改进了,但没有修复。
    2. 已下载修补程序 - - http://archive.msdn.microsoft.com/KB978520(可能不需要)
    3. 已下载的修补程序 - - http://archive.msdn.microsoft.com/KB2484841(即使您有 Windows 7 / .NET 4 也绝对需要)
    4. 进一步改进了代码(验证导致对象过多)-Why does WPF Style to show validation errors in ToolTip work for a TextBox but fails for a ComboBox?

    可能只需要数字 3,但它有效。只是在这里发帖,这样人们就不会失去我在内存分析器等中失去的日子。

    【讨论】:

      【解决方案2】:

      在我的例子中,它通过将该代码添加到主窗口来工作。不过,我稍微简化了一下:

      public partial class MyMainWindow : Window
      {
          public MyMainWindow() {
                GotFocus += WindowGotFocus;
          }
      
          private void WindowGotFocus(object sender, RoutedEventArgs e)
          {
              WindowInteropHelper helper = new WindowInteropHelper(this);
              var mainWindowAutomationElement = AutomationElement.FromHandle(helper.Handle);
              Automation.AddStructureChangedEventHandler(mainWindowAutomationElement, TreeScope.Element,
                                                         delegate {});
              GotFocus -= WindowGotFocus;
          }
      }
      

      在我的机器上,这种方法的唯一问题是调试器窗口会出现以下消息:

      • 在 PresentationCore.dll 中发生 System.Windows.Automation.ElementNotAvailableException' 类型的第一次机会异常
      • 在 UIAutomationClientsideProviders.dll 中发生了“System.ArgumentException”类型的第一次机会异常
      • 在 mscorlib.dll 中出现“System.NotSupportedException”类型的第一次机会异常
      • 在 UIAutomationClient.dll 中出现“System.ComponentModel.Win32Exception”类型的第一次机会异常

      这一切都发生了很多次。我无法修复这些消息,但我的应用程序现在运行得更快了。

      【讨论】:

      • 我现在已经确定,进程 asghost.exe 导致了我的问题。当我杀死它时,一切都很好。
      猜你喜欢
      • 2011-08-08
      • 1970-01-01
      • 2013-09-11
      • 1970-01-01
      • 1970-01-01
      • 2015-05-14
      • 1970-01-01
      • 2010-10-13
      • 2011-11-16
      相关资源
      最近更新 更多