此主题属于this
我在问我在哪里需要从this
插入变通方法我有一个WPF应用程序,在Windows 7的某些客户端上存在性能问题。在Windows XP上,所有工作都很快。该应用程序有一个MainShell和一些Child-Windows。 MainShell有时在某些机器上挂起,子窗口也是如此。现在,我是否必须从所有窗口中的上述链接的线程中插入变通方法? 还有其他解决方法吗?
答案 0 :(得分:2)
我一直致力于一个几乎所有东西都很好的应用程序,但WPF控件在某些笔记本电脑上很慢(联想)。它是滞后和冻结的,通常会抑制使用。
我做了以下事情:
可能只需要3号,但它有效。只是发布在这里,所以人们不会失去我在内存分析器等中丢失的日子。
答案 1 :(得分:1)
在我的情况下,它通过将代码添加到主窗口来工作。但是,我简化了一下:
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;
}
}
在我的机器中,这种方法的唯一问题是调试器窗口混乱了如下消息:
所有事情都发生了很多次。我无法修复这些消息,但我的应用程序现在运行得更快。