问题描述
我正在使用.NET-framework为需要Web浏览器的.NET开发x64应用程序的插件。我决定在版本83.4.2中使用CefSharp作为浏览器框架。我能够初始化CEF并可以创建Winforms控件。
触发IsbrowserIsInitializedChanged
之后,我开始加载网址。我现在遇到的问题是,浏览器标志IsLoading
仅从false更改为true,而在加载后没有更改。
我试图使用x86版本,但是在外部程序中这是不可能的。我为测试的LoadingStateChanged
事件添加了一个事件处理程序,因此我发现该标志仅设置了一次。
以下是一些代码段:
- 使用的设置
{
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");
- 为插件创建调色板
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);
}
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:删除处理程序的提示就是解决方案。
现在我需要在处理程序中查找问题,因为我至少需要两个。