检查GeckoFX中的ReadyState

时间:2015-05-26 20:15:37

标签: gecko geckofx readystate

我为我的C#项目使用WebBrowser控件。我尝试集成GeckoFX而不是WebBrowser。因为我总是在WebBrowser中更改输入,所以我必须等到网站完全加载。这就是为什么,我使用以下方法:

   private void navigateBrowser(string URL)
        {
            wb.Navigate(URL);
            while (wb.ReadyState != WebBrowserReadyState.Complete)
            {
                Thread.Sleep(1);
                Application.DoEvents();
            }
        }

我已经为GeckoFX更改了这个方法,如下所示:    private void navigateBrowser(string URL)

private void navigateBrowser(string URL)
        {
            wb.Navigate(URL);

  while (wb.Document.ReadyState != "complete")
            {
                Application.DoEvents();
            }
            while (wb.IsBusy)
            {
                Application.DoEvents();
            }
}

我调用navigateBrowser(“http://facebook.com”),然后填写表单进行登录。提交表单后,我必须登录另一个网站(在linkedin.com中)我再次调用navigateBrowser(“http://linkedin.com”),当尝试从geckowebbrowser调用一些元素时,我收到错误“对象”引用未设置为对象的实例。“我检查了geckowebbrowser的实际网址,它仍然是facebook.com,但我应该是linkedin.com,因为我打电话给linkedin.com。

可能是什么问题?我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

使用webbrowser的DocumentCompleted事件。

因此,举例来说 - 您的应用中有一个按钮可以导航到特定的网页,还有一个方法可以在加载后读取该页面。

因此,在DocumentCompleted事件hanlder中,调用该方法 - 这将确保页面已经加载。

在页面加载时等待Application.DoEvents()循环不是一个好主意。例如,如果在循环期间某些内容关闭/崩溃应用程序,它仍然会运行并且不会关闭。

此致