【问题标题】:Performance issue of WPF application when .NET 4.5 is installed安装 .NET 4.5 时 WPF 应用程序的性能问题
【发布时间】:2015-01-23 14:02:06
【问题描述】:

我们升级了我们的开发机器,并用它安装了 .NET 4.5

在那之后,我们注意到使用 .NET 4.0 开发的应用程序明显变慢了。这无需触及源代码或应用程序编译的 .NET 版本。问题是,应用程序本身非常复杂,不可能区分可能的原因。可能的原因可能包括:

  • 一般 WPF 缓慢(不太可能)
  • Telerik 库(同上)
  • WriteableBitmap,即使用户不做任何操作也会大量使用(是的,SetDirty 使用得当)
  • WCF 用于通过 TCP 持续接收“大量”数据 (~5kB/s)

我在问是否有关于这个问题的任何相关信息。我试图谷歌,但我只得到性能提示,没有适合我的问题。目前,解决方法是卸载 4.5 并安装 4.0,从而解决了性能问题。

【问题讨论】:

  • 分析应用程序。大部分时间都花在了哪里?
  • 强烈建议对应用程序进行 ETW 跟踪以进行故障排除(使用 PerfView 是一个好的开始channel9.msdn.com/Series/PerfView-Tutorial)。

标签: wpf performance wcf .net-4.5


【解决方案1】:

所以,我想通了。

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

.NET 4.5 似乎对Dispatcher 做了一些更改,因此它成为我们用例的瓶颈。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-25
    • 2012-08-22
    • 2012-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多