CefSharp ChromiumWebBrowser WPF第一次慢启动

时间:2018-04-15 15:46:52

标签: c# wpf cefsharp

我的应用程序的用户应该能够(在运行时)添加包含wpf:ChromiumWebBrowser

的新控件

但是第一次添加它似乎需要10-20秒才能实现WebBrowser实际出现的速度慢得令人无法接受。 然而,一旦加载了第一个控件,添加更多只需要1-2秒。但我不想让初始控件花费这么长时间。

我现在基本上只做最简单的事情:

<UserControl x:Class="MyProject.ComponentControls.MyWebBrowserControl"
             xmlns:wpf="clr-namespace:CefSharp.Wpf;assembly=CefSharp.Wpf"

    <Grid>
        <wpf:ChromiumWebBrowser Grid.Row="0"" Address="http://www.google.com" />
    </Grid>

</UserControl>
  • CefSharp版本:63.0.3
  • OS:Win 10
  • .NET版本:4.6.1
  • 平台:x86



编辑:将CefSharp版本降级到63.0.0似乎解决了我的初始加载速度非常慢的问题。

1 个答案:

答案 0 :(得分:-1)

WPF版本的cefsharp使用与WinForms不同的渲染模型。在WPF中,它基本上将每个帧复制到一个位图中,你可以想象它会变得多慢。这在高分辨率屏幕上尤其明显。有一些选项可以改善性能(example),但根据我的经验(我尝试了所有选项),它们都没有真正有助于匹配WinForms。为了在我的WPF项目中顺利运行cefsharp,我实际上必须使用WinForms版本的cefsharp并将其托管在WindowsFormsHost中 - 这有助于解决性能问题,但当然有它的注意事项(例如,你不能部分隐藏WPF背后的WinForms托管控件)控件 - 它将始终呈现在所有内容之上)。不过,就目前而言,我认为这是唯一可行的选择,因为高分辨率屏幕现在相当广泛