我正在使用 .NET WebBrowser Control (2.0) 在我的应用程序中查看 Internet 上的网站——效果很好!不幸的是,我们发现了一个巨大的缺点:速度。据我所知,该控件的性能始终如一JavaScript 性能不佳(在 sunspider 中为 6000 毫秒以上,而在 IE10 中为 150 毫秒)。这也可以通过使用 Maxthon 浏览器的“Retro”模式、一个最小的工作示例(即一个仅包含浏览器而没有其他逻辑的简单表单)和 Visual Studio 的内置浏览器来验证——它们都表现得同样糟糕。它们都使用 IE10 版本的控件(通过注册表打开),因此理论上可以预期类似的性能,或者我们认为。使用 Spy++ 查看 IE10 和使用托管控件的程序之间的差异,可以找到 Shell DocObject View 的附加包装器:ShellEmbedding。
http://imgur.com/csUDdaU在DesktopGap 托管的WebBrowser 控件的下部显示了包装器,而在上部没有ShellEmbedding 的情况下可以看到IE 的浏览器窗口。
我相信,这是造成性能不佳的原因——但我既不知道解决这个问题的方法,也没有任何好的来源——这让我想到了我的问题:
有没有办法加快 WebBrowser 控件的性能?
到目前为止,我们的主要想法是以某种方式移除 ShellEmbedding 并直接实例化 Shell DocObject View(如果可能);GPU_RENDERING 已启用且 IE10 模式处于活动状态 ( http://msdn.microsoft.com/en-us/library/ee330731%28v=VS.85%29.aspx )。
此外,CSS 处理似乎也比 IE 更差,所以可能有联系。
干杯,
克劳斯