将WPF项目从3.5迁移到4.0后,可能导致性能下降的原因是什么?

时间:2010-11-18 02:34:31

标签: c# wpf performance .net-3.5 .net-4.0

当我将我的应用程序编译到目标版本的4.0框架时,UI性能直接下降到地狱。例如,打开包含可能有6个Label和TextBox控件的Grid的Expander从近瞬时到3-4秒,然后在它渲染网格的第二列(可编辑控件)和首先(他们的标签)。

如果我回到3.5,一切都会回到原来的样子:打开扩展器和看到它的内容之间几乎没有任何延迟,并且网格中的标签渲染得如此之快,以至于你无法看到它发生。

当然,有一百万件事可能会导致这种情况发生。我想我希望有人可以告诉我的是我应该开始寻找的地方。我现在并不特别需要升级到4.0,所以我没有很大的动力来挖掘这个野兽的分析,但如果我在3.5时坐在这里积累技术债务我想知道它。

3 个答案:

答案 0 :(得分:3)

这确实是一个奇怪的事情,我现在已经将两个重型WPF3应用程序迁移到4个没有问题(忽略了一些资源问题)但是如果有的话它很好地改进了我们的运行时性能。

虽然不能直接回答你的问题,但当我们转到WPF 4时,我跟着the write up by Paul Harrington。我也花了很多时间与the WPFPerf tool - 我意识到你不想轮廓!

我唯一能想到的是WPF4 vs WPF3.5中图形渲染层的更改。这导致其中一个测试人员意识到他的测试盒正在软件渲染中运行(由于图形驱动程序更新错误导致硬件加速被禁用)。 RenderOptions.ProcessRenderMode是您在这里检查的朋友。但是我猜你无论如何都会使用相当不错的套件:)

答案 1 :(得分:2)

您可能正在使用为.NET 3.5编译的DLL,一旦需要构建其中一种类型,就会强制加载大量3.5 DLL。检查以确保所有DLL都是4.0。

答案 2 :(得分:-1)

也许您正在使用或滥用WPF 4.0的一项新功能?

我首先调查此列表,看看是否有任何远程应用于该应用程序。

祝你好运

What's new in WPF 4.0 (list)