C#使用CefSharp重新打开表单
有一个代码:C#使用CefSharp重新打开表单,c#,forms,cefsharp,C#,Forms,Cefsharp,有一个代码: MainBot mainBot = new MainBot (); mainBot.IdBot = "hm"; mainBot.Url = "https://www.home-style.shop/"; mainBot.Proxy = ""; mainBot.IdBtn = ""; mainBot.TimeB
MainBot mainBot = new MainBot ();
mainBot.IdBot = "hm";
mainBot.Url = "https://www.home-style.shop/";
mainBot.Proxy = "";
mainBot.IdBtn = "";
mainBot.TimeBtnClick = 1000;
mainBot.TimeReturn = 5000;
mainBot.Show ();
它像使用浏览器一样打开表单(使用CefSharp库),然后在TimeReturn->this.Close()中指定的时间后关闭表单代码>
当您通过按钮重新打开表单时,它写道->“每个进程只能初始化一次CEF。这是基础CEF/Chromium框架的一个限制。您可以更改很多(不是全部)通过RequestContext.SetPreference在运行时进行设置。请参阅https://github.com/cefsharp/cefsharp/wiki/General Usage#请求上下文浏览器隔离使用Cef.IsInitialized以防止此异常。如果您意外看到此情况,则可能在创建ChromiumWebBrowser实例后调用Cef.Initialize必须在创建第一个实例之前。”
可以执行一次插入。因此,我在表单中添加了**FormClosing**并输入了Cef.Shutdown()代码>初始化错误已修复,但现在,当重新打开时,表单不会打开,打开表单的表单只是挂起并关闭。
请告诉我要做什么CefSharp可以通过两种方式初始化:
- 显式:使用适当的Cef设置调用Cef.Initialize(设置)
- 隐式:打开新的chromiumWebBrowser时,CEF将使用默认设置初始化
但是,您的代码不清楚如何执行初始化部分
就我个人而言,我更喜欢用我所选择的设置来明确地做到这一点。无论你在哪里做
- 主要方法
- 表单构造函数
- 加载/显示事件
只需确保每个应用程序只调用一次initialize!
在打开任何表单之前,我通常使用main方法
cef也是如此。关闭:一旦调用cef,就不能再次打开!
我在应用程序之后调用它。在应用程序关闭之前运行
如异常所示,请在中查看更多信息。使用Cef.i初始化以防范异常。仅当Cef.IsInitialized为false时调用Cef.Initialize。