Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# wpfui自动化问题_C#_Wpf_Performance_Ui Automation - Fatal编程技术网

C# wpfui自动化问题

C# wpfui自动化问题,c#,wpf,performance,ui-automation,C#,Wpf,Performance,Ui Automation,这根线属于 我在问我需要从哪里插入变通方法 我有一个WPF应用程序,它在Windows 7的某些客户端上存在性能问题。在Windows XP上,一切都运行得很快。该应用程序有一个MainShell和一些子窗口。主外壳有时挂在某些机器上,子窗口也是如此。现在,我必须在所有窗口中从上面链接的线程中插入变通方法吗? 还有其他的解决方法吗?在我的例子中,它通过将代码添加到主窗口来工作。但是,我简化了一点: public partial class MyMainWindow : Window {

这根线属于

我在问我需要从哪里插入变通方法

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

在我的例子中,它通过将代码添加到主窗口来工作。但是,我简化了一点:

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”的异常

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

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

我做了以下工作:

  • 实现了上面的代码:改进了它,但没有修复
  • 下载的修补程序---(可能不需要)
  • 下载的修补程序---(即使您有Windows 7/.NET 4,也绝对需要)
  • 进一步改进了代码(验证导致对象过多)——

  • 也许只需要3号,但它奏效了。只是在这里发布,这样人们就不会失去我在内存分析器等中失去的日子。

    我现在已经确定,进程asghost.exe导致了我的问题。当我杀了这个,一切都很好。