我在项目中使用CefSharp Web浏览器。但是当我在两个WinForms之间切换时,我得到了这个异常。
System.Exception:'每个进程只能初始化一次CEF。这是基础CEF/Chromium框架的限制。您可以通过RequestContext. SetPreference在运行时更改许多(不是全部)设置。请参阅https://github.com/cefsharp/CefSharp/wiki/General-Usage#request-context-browser-isolation使用Cef.IsInitialized来防止此异常。如果您意外地看到这一点,那么您可能正在调用Cef。在创建ChromiumWebBrowser示例之后初始化,它必须在创建第一个示例之前。
这里是代码。
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
2条答案
按热度按时间k4emjkb11#
如果您确实想调用
Cef.Initialize(....);
(当然是使用一些参数,如CefSettings obj等)您必须在之前调用它,因为创建浏览器时会使用默认设置初始化 * Cef。
正如您可能猜到的,一旦您再次尝试调用Initialize,它将出现错误,因为它只能初始化一次。
cu6pst1q2#
您需要添加以下行: