How to improve ElementHost performance

最近在对WPF和Win32、Windows Form互相寄宿进行性能优化,发现其中导致的性能损失不可忽视。由于在Visual Studio AddIn无法直接创建WPF的控件,需要借助ElementHost寄宿于Windows Form控件。正是由于这样一个中间层的转换导致ElementHost内部占用了较高的内存(通过Mem Profiler发现大约损耗在25MB)。并且由于内部KeepWPFInitialized等函数的初始化导致加载WPF Control也相当耗时。下面说两个处理方式以改善性能:
1. 在应用程序启动时创建一个Size为1的Windows Form控件,内部有一个同样Size为1的ElementHost。这样可以确保再加载真正的WPF 控件时已经完成了WPF Runtime的创建工作。比如你可以在OnConnection函数中的DTE2的ext_ConnectMode为ext_cm_Startup时创建,然后在ext_cm_AfterStartup时加载真正的WPF 控件。
2. 当ElementHost寄宿的Windows Form控件SizeChanged后,调用GC.Collect函数回收创建Bitmap后导致等待回收的部分多余内存。
Visual Studio 2010的Start Page是用WPF开发的,所以启动以后所耗费的内存和我现在推算的几乎一致。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值