C# 在C中等待使用Gecko FX加载页面#

C# 在C中等待使用Gecko FX加载页面#,c#,gecko,C#,Gecko,以下是我所使用的代码,我对此表示关注: void GoWebBrowser(string url) { if (String.IsNullOrEmpty(url)) return; if (url.Equals("about:blank")) return; GeckoPreferences.User["places.history.enabled"] = false; GeckoPr

以下是我所使用的代码,我对此表示关注:

void GoWebBrowser(string url)
    {
        if (String.IsNullOrEmpty(url)) return;
        if (url.Equals("about:blank")) return;
        GeckoPreferences.User["places.history.enabled"] = false;
        GeckoPreferences.User["security.warn_viewing_mixed"] = false;
        GeckoPreferences.User["plugin.state.flash"] = true;
        GeckoPreferences.User["browser.cache.disk.enable"] = true;
        GeckoPreferences.User["browser.cache.memory.enable"] = true;
        GeckoPreferences.User["dom.max_script_run_time"] = 0; //let js run as long as it needs to; prevents timeout errors
        GeckoPreferences.User["browser.download.manager.showAlertOnComplete"] = false;
        GeckoPreferences.User["privacy.popups.showBrowserMessage"] = true;
        GeckoPreferences.User["browser.xul.error_pages.enabled"] = true;
        GeckoPreferences.User["view_source.editor.external"] = true;
        GeckoPreferences.User["browser.frames.enabled"] = true;
        GeckoPreferences.User["browser.sessionhistory.cache_subframes"] = true;
        GeckoPreferences.Default["extensions.blocklist.enabled"] = false;
        GeckoPreferences.User["general.useragent.override"] = "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:70.0) Gecko/20100101 Firefox/70.0";
        GeckoPreferences.Default["dom.ipc.plugins.enabled.npswf32.dll"] = true;
        GeckoPreferences.Default["config.use_system_prefs"] = true;

        Gecko.CertOverrideService.GetService().ValidityOverride += geckoWebBrowser1_ValidityOverride;
        wb.DocumentCompleted += wbBrowser_DocumentCompleted;

        wb.NoDefaultContextMenu = true;
        wb.Dock = DockStyle.Fill;
        wb.Navigate(url);
        wb.DocumentCompleted += wbBrowser_DocumentCompleted;
    }
    void wbBrowser_DocumentCompleted(object sender, Gecko.Events.GeckoDocumentCompletedEventArgs e)
    {
        while ( wb.IsBusy)
        {
            Application.DoEvents();
            System.Threading.Thread.Sleep(1);
        }
        if (e.Uri.AbsolutePath != (sender as GeckoWebBrowser).Url.AbsolutePath)
            return;
    }
wb.documentcomplete不会等待我的网页完成加载。 wb不允许我访问readystate,我只有readystatechange


提前感谢您的回复

现代网页只有在文档完成事件后很久才会完全加载。JavaScript之类的东西可以异步加载,甚至一旦加载,页面“准备好”供用户输入也可能需要几秒钟。我看到的一种方法是在一些javascript中设置一个标志,以某种方式保证最后运行,然后主机检查该标志