所以我想要做的是能够以2个cefsharp浏览器窗口以相同的形式同时加载2个URL这个示例图像将有助于解释更好的qazxsw poi
我似乎无法弄清楚如何做到这一点。目前我似乎只能得到一个实例。如果我尝试运行2,我会收到此错误:
如果无法做到这一点,可以为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.
每个应用程序只能初始化一次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
您可以在Form中添加几个groupBox,并将“ChromiumWebBrowser”添加到groupBox。例:
if (Cef.IsInitialized)
{
Console.WriteLine("Sorry, cannot start other instance because there's already an open browser");
}