【问题标题】:How to properly initialize CefSharp web browser如何正确初始化 CefSharp 网络浏览器
【发布时间】:2020-07-30 16:53:42
【问题描述】:

我在我的项目中使用 CefSharp 网络浏览器。但是当我在两个 WinForms 之间切换时,我得到了这个异常。

System.Exception: 'CEF 每个进程只能初始化一次。这是底层 CEF/Chromium 框架的限制。您可以在运行时通过 RequestContext.SetPreference 更改许多(不是全部)设置。请参阅https://github.com/cefsharp/CefSharp/wiki/General-Usage#request-context-browser-isolation 使用 Cef.IsInitialized 来防范此异常。如果您意外地看到这个,那么您很可能在创建 ChromiumWebBrowser 实例之后调用 Cef.Initialize,它必须在创建第一个实例之前。'

这里是代码。

public ChromiumWebBrowser browser;


    public void InitBrowser()
    {
        Cef.Initialize(new CefSettings());
        browser = new ChromiumWebBrowser(Settings.Default.SetLink);
        this.GpBrwsr.Controls.Add(browser);
        browser.Dock = DockStyle.Fill;
    }
    public Form3()
    {
    
        InitBrowser();
    }

    private void browser_LoadingStateChanged(object sender, LoadingStateChangedEventArgs e)
    {
        if (e.IsLoading == false)
        {
            browser.ExecuteScriptAsync("alert('All Resources Have Loaded');");
        }
    }

这就是我在表单之间切换的方式。

LoginToSettings Login = new LoginToSettings();
Login.Show();
this.Hide();

我的问题是如何初始化它,这样我就不会偶然发现这个异常? 我还尝试了“表单最小化”选项而不是“表单隐藏” 但还是同样的问题。

我已使用此链接来使用 CefSharp 浏览器。 Code Source for CefSharp

【问题讨论】:

  • 请不要有代码图片,见idownvotedbecau.se/imageofcode
  • 只能调用一次Cef.Initialize,可以查看Cef.IsInitialized是否已经被调用。在我看来,在你的 program.cs 文件中调用它是最简单的地方github.com/cefsharp/CefSharp.MinimalExample/blob/master/… 异常有什么不清楚的地方?这是一个真正的问题,因此如果需要,我可以改进错误消息。在您的情况下,由于您没有在 CefSettings 上设置任何值,因此您根本不需要调用 Cef.Initialize。
  • @amaitland 我正在尝试通过初始化来显示谷歌网页。不是“设定价值”吗?
  • 您可以安全地删除 Cef.Initialize(new CefSettings());在您的实例中,因为这是默认设置。您尚未设置任何自定义设置。如果您打算在 CefSettings 上设置一些值,那么只需添加一个 if not Cef.IsInitialized 检查。您只能调用 Cef.Initialize 一次。

标签: c# winforms google-chrome browser cefsharp


【解决方案1】:

未来来到这里的人:

如果你想打电话给Cef.Initialize(....); (当然还有一些参数,例如 CefSettings obj 等。)

您必须在创建new ChromiumWebBrowser() 之前调用is,因为创建浏览器将使用默认设置初始化 Cef, 而且您可能会猜测,一旦您再次尝试调用 Initialize,它就会出现错误,因为它只能被初始化一次。

【讨论】:

    猜你喜欢
    • 2016-06-23
    • 1970-01-01
    • 1970-01-01
    • 2018-01-06
    • 1970-01-01
    • 1970-01-01
    • 2012-10-30
    • 2014-04-03
    • 1970-01-01
    相关资源
    最近更新 更多