简体   繁体   English

为什么在加载 state 时保留 ChromiumWebBrowser 表单 CefSharp/WinForms

[英]Why keeps the ChromiumWebBrowser form CefSharp/WinForms in loading state

I'm developing a plugin for a x64 application in c# with .NET-framework which needs a webbrowser.我正在为 c# 中的 x64 应用程序开发一个插件,该插件需要一个网络浏览器。 I decided to use CefSharp in verison 83.4.2 as browser framework.我决定在 83.4.2 版本中使用 CefSharp 作为浏览器框架。 I'm able to initialize the CEF and can create the winforms control.我能够初始化 CEF 并可以创建 winforms 控件。 After the IsBrowserIsInitializedChanged was triggered, I start loading a url.触发IsBrowserIsInitializedChanged后,我开始加载 url。 The problem I have now is, that the browser flag IsLoading only changes from false to true, but did not change back after loading.我现在遇到的问题是,浏览器标志IsLoading仅从 false 更改为 true,但在加载后没有变回。

I tried to use the x86 version, but this is not possible in the external program.我尝试使用x86版本,但这在外部程序中是不可能的。 I added an eventhandler for the LoadingStateChanged event for tests and so I found out that the flag is only set once.我为测试的LoadingStateChanged事件添加了一个事件处理程序,因此我发现该标志只设置了一次。

Here are some code snippets:以下是一些代码片段:

  • used settings使用的设置
{
   BrowserSubprocessPath = subprocess,
   CachePath = Path.Combine(cefAppdataPath, "Cache"),
   IgnoreCertificateErrors = false,
   Locale = currentCultureName,
   LocalesDirPath = Path.Combine(runtimepath, "locales"),
   LogSeverity = LogSeverity.Verbose, //Info //Verbose //Default
   LogFile = Path.Combine(cefAppdataPath, "cef.log"),
   MultiThreadedMessageLoop = true,
   PersistSessionCookies = true,
   PersistUserPreferences = true,
   RemoteDebuggingPort = 20480,
   ResourcesDirPath = Path.Combine(runtimepath),
   UserAgent = "CustomUseragent with " + CefSharp.Cef.ChromiumVersion,
   UserDataPath = Path.Combine(cefAppdataPath, "UserData")
}
_settings.CefCommandLineArgs.Add("enable-media-stream");
_settings.CefCommandLineArgs.Add("force-device-scale-factor", "1");
_settings.CefCommandLineArgs.Add("no-proxy-server");
  • creating the palette for the plugin为插件创建调色板
InitCef();
if (!havePalette("GISX"))
    {
        log.Debug("Create palette browser");
        var browserControl = new WebBrowserControl(App, GisxApp.Startpage, null);
        browserControl.Create();
        browserControl.isInitialized.WaitOne();
        App.BrowserControl = browserControl;
        log.Debug("Add palette browser");
        myPaletteSet.Add("GISX", browserControl);
    }
  • the constructor of WebBrowserControl WebBrowserControl 的构造函数
ChromiumWebBrowser WebBrowser = new ChromiumWebBrowser(homeurl)
{Dock = DockStyle.Fill};
WebBrowser.DownloadHandler = new WebDownloadHandler();
WebBrowser.LifeSpanHandler = new WebLifeSpanHandler(false);
WebBrowser.JsDialogHandler = (IJsDialogHandler)new WebJSDialogHandler();
WebBrowser.KeyboardHandler = new WebKeyboardHandler();
WebBrowser.MenuHandler = new WebContextMenuHandler(homeUrl);
WebBrowser.RenderProcessMessageHandler = new WebRenderBrowserProcessManager();
WebBrowser.DisplayHandler = new WebDisplayHandler();

this.Controls.Add(WebBrowser);

WebBrowser.IsBrowserInitializedChanged += new EventHandler(BrowserCreated);
WebBrowser.IsBrowserInitializedChanged += new EventHandler(InitializesationChanged);
WebBrowser.LoadingStateChanged += WebBrowser_LoadingStateChanged;

@amaitland: Your hint with removing the handlers was the solution. @amaitland:您删除处理程序的提示是解决方案。

Now I need to find the problem in the handlers, because I need at least two of them.现在我需要在处理程序中找到问题,因为我至少需要其中两个。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 CefSharp ChromiumWebBrowser专用浏览器C#winforms - CefSharp ChromiumWebBrowser private browser C# winforms 如何截获CefSharp.WinForms.ChromiumWebBrowser的WndProc消息? - How can I intercept WndProc messages of CefSharp.WinForms.ChromiumWebBrowser? CefSharp.WinForms.ChromiumWebBrowser自定义权限上下文菜单 - CefSharp.WinForms.ChromiumWebBrowser custom right context menu CefSharp.WinForms "Dock =DockStyle.Fill" 没效果,黑边。如何让ChromiumWebBrowser填充TBForm? - CefSharp.WinForms "Dock =DockStyle.Fill" no effect, black edge.how to make the ChromiumWebBrowser fill the TBForm? Winforms 的 ContextmenuStrip 和 ChromiumWebBrowser - Winforms' ContextmenuStrip and ChromiumWebBrowser cefSharp ChromiumWebBrowser 大小到页面内容 - cefSharp ChromiumWebBrowser size to page content CefSharp ChromiumWebBrowser javascript excel 导出不起作用 - CefSharp ChromiumWebBrowser javascript excel export not working 在 Cefsharp chromiumwebbrowser 中使用 url 发布数据参数 - Post data parameters with url in Cefsharp chromiumwebbrowser CEFSHARP - ChromiumWebBrowser 获取表格行单元格值 - CEFSHARP - ChromiumWebBrowser on get table row cell values CefSharp ChromiumWebBrowser中的C#InvokeMember,GetElementById,SetAttribute - C# InvokeMember, GetElementById, SetAttribute in CefSharp ChromiumWebBrowser
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM