C# 用 CefSharp 重新打开一个表单

C# Reopening a form with CefSharp

有一个密码:

        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 框架的限制。您可以在运行时通过 [=20 更改许多(不是全部)设置=]。请参阅 https://github.com/cefsharp/CefSharp/wiki/General-Usage#request-context-browser-isolation 使用 Cef.IsInitialized 来防止此异常。如果您意外看到此内容,那么您可能正在调用Cef.Initialize在您创建 ChromiumWebBrowser 实例之后,必须在创建第一个实例之前。"

灌化可以进行一次。因此,我在表单中添加了 ** FormClosing ** 并输入了 Cef.Shutdown (); 初始化错误已修复,但现在,当重新打开时,表单不会打开,而打开它的表单只是挂起并关闭。 请告诉我该怎么做

CefSharp 可以通过两种方式初始化:

  • 显式:使用适当的 cefSettings
  • 调用 Cef.Initialize(settings)
  • 隐式:当您打开一个新的 chromiumWebBrowser CEF 将使用默认设置进行初始化

虽然您的代码不清楚您是如何执行初始化部分的。

就我个人而言,我更喜欢使用我选择的 cefSettings 明确地执行此操作。无论你在哪里做

  • 主要方法
  • 表单构造函数
  • load/show 事件

只需确保每个应用程序只调用一次初始化! 我通常在打开任何表单之前在 main 方法中执行此操作。

同样适用于cef.shutdown:调用CEF 后无法再次打开! 我在应用关闭application.run之后调用

更多信息在 General Usage Guide