在不同的实例CefSharp中同时加载2个URL

问题描述 投票:0回答:2

所以我想要做的是能够以2个cefsharp浏览器窗口以相同的形式同时加载2个URL这个示例图像将有助于解释更好的qazxsw poi

我似乎无法弄清楚如何做到这一点。目前我似乎只能得到一个实例。如果我尝试运行2,我会收到此错误:

enter image description here

如果无法做到这一点,可以为C#推荐另一个支持HTML5的浏览器吗?

An unhandled exception of type 'System.Exception' occurred in CefSharp.Core.dll

Additional information: Cef can only be initialized once. Use Cef.IsInitialized to guard against this exception.
c# cefsharp
2个回答
0
投票

每个应用程序只能初始化一次CEF。

public ChromiumWebBrowser Browser; CefSettings settings = new CefSettings(); void InitBrowser() { settings.UserAgent = "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2764.0 Safari/537.36"; Cef.Initialize(settings); Browser = new ChromiumWebBrowser("about:blank"); Browser.FrameLoadEnd += OnFrameLoadEnd; Browser.LoadingStateChanged += OnLoadingStateChanged; Browser.FrameLoadStart += OnFrameLoadStart; Browser.LoadError += OnLoadError; Controls.Add(Browser); Browser.Dock = DockStyle.Fill; } 甚至还有一个主题。

每个应用程序只能初始化一次CEF。关于这一点没有任何改变。这就是CEF的功能。

虽然CEF和CefSharp的架构(它只是一个.NET绑定)是不同的:github CefSharp repository here。有一个常见的浏览器进程,然后为每个“窗口”或“选项卡”生成一个渲染器进程。 (您可以在Windows任务管理器中看到它们)

基本上它是不可能的,甚至不是以不同的形式。

您可以使用以下代码检查是否已经有任何实例正在运行(也许您可以停止第一个,然后启动另一个,尽管在您的情况下似乎没用):

https://bitbucket.org/chromiumembedded/cef/wiki/Architecture#markdown-header-process-considerations

0
投票

您可以在Form中添加几个groupBox,并将“ChromiumWebBrowser”添加到groupBox。例:

if (Cef.IsInitialized)
{
    Console.WriteLine("Sorry, cannot start other instance because there's already an open browser");
}
© www.soinside.com 2019 - 2024. All rights reserved.