繁体   English   中英

WPF C#应用程序性能

[英]WPF C# Application Performance

我们有一个用.Net 4.0编写的C#WPF应用程序,它有一些相对简单的数据绑定和网格功能。

造型包括一些“调整”,包括一些悬停颜色等。

在包含20个部署的3台机器上,我们遇到了一些非常奇怪的UI性能问题。

实际上,重新启动后应用程序运行良好,但在一定(未确定)的时间后,UI变得非常缓慢。 例如,将鼠标悬停在按钮上,在应用/渲染悬停颜色样式之前,将会延迟几秒钟。

这些机器的规格几乎相同。 图形驱动程序已更新,标准设置是两个NVidia Quadro 290卡。 另外,我们制作了一个“测试”应用程序,其中只包含一些测试UI组件(包括Fluent功能区),后面没有代码。 问题仍然存在。

我已经运行Windows性能套件来“深入”运行时WPF,而且非常奇怪的是,如果勾选了“禁用脏区支持”选项,则UI将恢复正常响应。 我的理解是,如果有的话,这应该会进一步降低性能!

我在这里尝试其他任何东西。 DotTrace性能分析表明,大部分应用程序时间都花在了PresentationFramework.dll上。

[编辑]所有机器都是Windows XP SP3。

[编辑]这可能发生在所有机器上,并且通常不允许应用程序运行足够长的时间来呈现问题。 我们现在正在测试这个。

[编辑]我还应该指出,我们正在尝试这里详述的修补程序。 它暂时安装在一台机器上,我会相应更新。

[编辑 - 24小时后]所以两台机器现在一夜之间运行相同的代码。 在我的机器上(从未表现出问题),在初始登录后,应用程序非常缓慢,但不到一分钟后恢复正常。 (我把它放到机器上清楚地从硬盘上取下东西)。 在另一台机器上(通常表明问题),应用程序在几秒钟后得到改善,但与我的相比现在仍然缓慢。

[编辑 - 48小时后]在测试机器上,测试应用程序现在在运行48小时后完全没有响应(锁定)。 在同一台机器上,一个轻量级的“shell”WPF应用程序(包含一个选项卡控件,一些按钮和一些面板和网格)仍在运行并且响应速度非常快。 因此,在这些更复杂的控件中出现的问题导致了这个问题......这确实指向可能是根本原因的(可能)触发器和委托。 我将再次介绍应用程序/控件。 与此同时,是否有人对如何确保应用程序定期“清理”后有任何建议? 因为我们在这里看第三方控件,所以我编辑它们的选项有限!

非常感谢可以提供的任何提示!

尝试在软件模式下呈现wpf。

在Loaded事件中:

HwndSource hwndSource = PresentationSource.FromVisual(this) as HwndSource;
HwndTarget hwndTarget = hwndSource.CompositionTarget;
hwndTarget.RenderMode = RenderMode.SoftwareOnly;

在比较开发人员和用户计算机之间的性能时要考虑的事情是加载WPF程序集所需的时间。

在开发机器上,您可能已经运行了可视工作室,或者以前运行过其他WPF应用程序,并且在您运行应用程序时应该已经加载了所有程序集。

在用户计算机上,可能刚刚重新启动,程序集将在应用程序启动时加载,从而使启动速度显着降低。 根据应用程序的设置方式,第一次使用各种功能/页面时可能会加载其他程序集。

我发现EQUATEC分析器在调试这些性能问题时很有用。 在构建项目之前,在应用程序选项中将分析更改为“完全常规信息”将分析到绑定级别。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM