Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 加载2个URL';s在不同的情况下同时发生_C#_Cefsharp - Fatal编程技术网

C# 加载2个URL';s在不同的情况下同时发生

C# 加载2个URL';s在不同的情况下同时发生,c#,cefsharp,C#,Cefsharp,因此,我想做的是能够加载2个URL的,在同一时间在同一形式与2个浏览器窗口 此示例图像将有助于更好地解释 我似乎不知道该怎么做。目前我似乎只能得到一个例子。如果尝试运行2,则会出现以下错误: An unhandled exception of type 'System.Exception' occurred in CefSharp.Core.dll Additional information: Cef can only be initialized once. Use Cef.IsInit

因此,我想做的是能够加载2个URL的,在同一时间在同一形式与2个浏览器窗口 此示例图像将有助于更好地解释

我似乎不知道该怎么做。目前我似乎只能得到一个例子。如果尝试运行2,则会出现以下错误:

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.
如果做不到这一点,有人能推荐另一款支持HTML5的C#浏览器吗


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

书中甚至有一个主题

每个应用程序只能初始化CEF一次。一切都没有改变 对此,。这就是CEF的功能

虽然CEF和CefSharp的体系结构(仅仅是一个.NET 顶部的绑定)是不同的: . 有一个通用的浏览器进程,然后生成一个渲染器 处理每个“窗口”或“选项卡”。(您可以在窗口中看到它们 任务管理器)

基本上这是不可能的,即使是以不同的形式。

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


您可以在表单中添加多个groupBox,并将“ChromiumWebBrowser”添加到groupBox。 例如:


简单的选择是在
Program.cs
中初始化。这个问题措词不当,因此答案只是胡乱猜测@jLynx,请说明是否需要会话隔离。也就是说,两个浏览器控件是否需要有单独的会话(就像两个不同的用户登录到同一个应用程序一样),或者它们是否可以共享会话和状态?理想情况下是的,但这与我4年前想要的并不重要
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;
        }
if (Cef.IsInitialized)
{
    Console.WriteLine("Sorry, cannot start other instance because there's already an open browser");
}
string url1 = "https://www.url1.com";
string url2 = "https://www.url2.com";
string url3 = "https://www.url3.com";

CefSettings settings = new CefSettings();
// Initialize cef with the provided settings
Cef.Initialize(settings);

        // Create a browser component
        ChromiumWebBrowser chromeBrowser1;
        chromeBrowser1 = new ChromiumWebBrowser(url1);
        // Add it to the form and fill it to the form window.
        groupBox1.Controls.Add(chromeBrowser1);
        chromeBrowser1.Dock = DockStyle.Fill;

        ChromiumWebBrowser chromeBrowser2;
        chromeBrowser2 = new ChromiumWebBrowser(url2);
        groupBox2.Controls.Add(chromeBrowser2);
        chromeBrowser2.Dock = DockStyle.Fill;

        ChromiumWebBrowser chromeBrowser3;
        chromeBrowser3 = new ChromiumWebBrowser(url3);
        groupBox3.Controls.Add(chromeBrowser3);
        chromeBrowser3.Dock = DockStyle.Fill;