C# 首次加载时将ElementHost(WPF控件)添加到窗体控件性能问题

C# 首次加载时将ElementHost(WPF控件)添加到窗体控件性能问题,c#,.net,wpf,winforms,xaml,C#,.net,Wpf,Winforms,Xaml,关于嵌入到Forms UserControl中的WPF控件的第一次加载,我遇到了一个主要的性能问题,在运行时仅添加ElementHost对象就需要3到4秒的时间 我正在使用VisualStudio2008作为.NET3.5应用程序 我有以下设置: 具有单个面板的窗体容器: using System.Windows.Forms; using System.Windows.Forms.Integration; namespace MyNamespace { public partial c

关于嵌入到Forms UserControl中的WPF控件的第一次加载,我遇到了一个主要的性能问题,在运行时仅添加ElementHost对象就需要3到4秒的时间

我正在使用VisualStudio2008作为.NET3.5应用程序

我有以下设置:

具有单个面板的窗体容器:

using System.Windows.Forms;
using System.Windows.Forms.Integration;

namespace MyNamespace
{
    public partial class TestContainer : UserControl
    {
        private ElementHost ctrlHost;
        private TestWPFControl wpfAddressCtrl;

        public TestContainer()
        {
            InitializeComponent();
            ctrlHost = new ElementHost();
            ctrlHost.Dock = DockStyle.Fill;
            panel1.Controls.Add(ctrlHost); //slow!
            wpfAddressCtrl = new TestWPFControl();
            wpfAddressCtrl.InitializeComponent();
            ctrlHost.Child = wpfAddressCtrl;
        }
    }
}
标准VS2008生成的WPF控件:

namespace MyNamespace
{
    public partial class TestWPFControl : UserControl
    {
        public TestWPFControl()
        {
            InitializeComponent();
        }
    }
}
附带的XAML:

<UserControl x:Class="MyNamespace.TestWPFControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="382" Width="467">
<Grid>
    <Button Height="23" Margin="170,46,222,0" Name="button1"   VerticalAlignment="Top">Button</Button>
</Grid>
是减速因素

使用计时器进行分析:

new ElementHost(): 23ms 
ElementHost.DockStyle: 0ms
'C:\Windows\assembly\GAC_MSIL\WindowsFormsIntegration\3.0.0.0__31bf3856ad364e35\W‌​indowsFormsIntegration.dll' 
Panel.Controls.Add(ElementHost): 4130ms
W的负载‌​indowsFormsIntegration.dll在每次冷启动时似乎需要约4秒钟

这是我第一次尝试将WPF控件添加到Forms元素,我不知道是什么原因造成的,更不用说如何解决将ElementHost添加到Forms控件的巨大首次加载时间了


作为记录,我第二次创建TestContainer的新实例的速度与预期一样快。

这些问题/答案都是我没有用到的。我没有在任何地方加载图标,这似乎是另外两个问题的主要问题。25毫秒我的电脑:
Stopwatch sw=new Stopwatch();sw.Reset();sw.Start();ctrlHost=新的ElementHost();ctrlHost.Dock=DockStyle.Fill;面板1.控件。添加(ctrlHost);sw.Stop();Show(sw.elapsedmillesons.ToString())
.net 3.5new ElementHost():23ms ElementHost.DockStyle:0ms'C:\Windows\assembly\GAC\u MSIL\WindowsFormsIntegration\3.0.0\uuuu 31bf3856ad364e35\WindowsFormsIntegration.dll'面板。Controls.Add(ElementHost):4130ms可能WindowsFormsIntegration的加载是硬件问题还是什么?
new ElementHost(): 23ms 
ElementHost.DockStyle: 0ms
'C:\Windows\assembly\GAC_MSIL\WindowsFormsIntegration\3.0.0.0__31bf3856ad364e35\W‌​indowsFormsIntegration.dll' 
Panel.Controls.Add(ElementHost): 4130ms