关于WPF程序启动性能

项目里WPF的启动时间太久(>1分钟),显然是不能接受的。超过10秒,连Loading的等待框都会让用户感到厌烦。

1. 症状

项目的结构是1个WPF主进程,启动3个WPF子进程。子进程在启动时会卡顿3-10秒不等,能在进程管理器里看这个进程,但只有1个线程、没有CPU波动、35个Handle创建、244K内存。然后就停住不动了,甚至我在Main()的头一句打的Log都没Print出来。

一开机启动会卡,连续启动10+次也会卡,说明不是Cold Start类的问题,否则只有第一次启动会卡。

反复启动10+次,偶尔不卡,多数会卡顿。似乎也不是标准的Warm Start类的问题。

2. 若干尝试:

主要参考这篇《Improving WPF applications startup time》

  1. 给用到XmlSerializer的库加PostEvent

    "C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools\sgen.exe" /f $(TargetFileName)

  2. 去掉代码的CA验证
    app.config里添加以下配置:
<runtime>
    <generatePublisherEvidence enabled="false"/>
</runtime>
  1. 用ngen
    ngen install [AssemblyName] // 会级联生成所有依赖的Native Image

试下来的结果是:都没用。先挖个坑在这里,等以后解决了来填吧。

转载于:https://www.cnblogs.com/AlexanderYao/p/5726463.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值