安装.NET 4.5时WPF应用程序的性能问题

安装.NET 4.5时WPF应用程序的性能问题,wpf,performance,wcf,.net-4.5,Wpf,Performance,Wcf,.net 4.5,我们升级了开发机器,并用它安装了.NET4.5 紧接着,我们注意到使用.NET4.0开发的应用程序明显变慢了。这不涉及源代码,也不涉及编译应用程序所依据的.NET版本。问题是,应用程序本身相当复杂,不可能分离可能的原因。可能的原因可能包括: 一般WPF慢度(不可能) Telerik图书馆(同上) WriteableBitmap,即使用户不做任何操作,也会大量使用它(是的,SetDirty使用正确) WCF过去经常通过TCP接收“大”量(~5kB/s) 我是问是否有关于这个问题的相关信息。我试

我们升级了开发机器,并用它安装了.NET4.5

紧接着,我们注意到使用.NET4.0开发的应用程序明显变慢了。这不涉及源代码,也不涉及编译应用程序所依据的.NET版本。问题是,应用程序本身相当复杂,不可能分离可能的原因。可能的原因可能包括:

  • 一般WPF慢度(不可能)
  • Telerik图书馆(同上)
  • WriteableBitmap,即使用户不做任何操作,也会大量使用它(是的,SetDirty使用正确)
  • WCF过去经常通过TCP接收“大”量(~5kB/s)
我是问是否有关于这个问题的相关信息。我试图用谷歌搜索,但我只得到性能提示,没有适合我的问题。现在,解决办法是卸载4.5并安装4.0,这解决了性能问题。

因此,我找到了解决办法

在当前代码中,
Dispatcher.Invoke
用于将更改从网络队列同步到UI。这被称为每秒多次。为了解决这个问题,我使用带有双缓冲区的
CompositionTarget.Render
event将网络队列推送到UI,它解决了性能问题


似乎.NET 4.5对
调度程序做了一些更改,因此它成为了我们用例中的一个瓶颈。

分析该应用程序。大部分时间花在哪里?强烈建议对应用程序进行ETW跟踪以进行故障排除(使用PerfView是一个良好的开端)。