【发布时间】:2013-05-09 00:04:52
【问题描述】:
我正在使用 .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差,所以可能有联系。
干杯,
克劳斯
【问题讨论】:
标签: .net performance webbrowser-control