Web browser not firing DocumentCompleted event

c#, multithreading, webbrowser-control

Solution

Something like this:

public void Start()
{
    System.Windows.Forms.WebBrowser wb = new System.Windows.Forms.WebBrowser();
    wb.DocumentCompleted += WebBrowserDocumentCompleted;
    wb.Visible = true;
    wb.ScrollBarsEnabled = false;
    wb.ScriptErrorsSuppressed = true;
    wb.Navigate(url);
}

private void WebBrowserDocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    if( (sender as WebBrowser).ReadyState == System.Windows.Forms.WebBrowserReadyState.Complete)
    {
        // Do what ever you want to do here when page is completely loaded.
    }
}

I hope this helps you in your quest.

Problem

I'm trying to implement simple webpage screen capture program. When I was using my code on UI thread all seemed to work with no problems, but when I called method from non-UI threads I couldn't get WebBrowserDocumentCompleted event to fire any more. I also tried this: ``` System.Windows.Forms.WebBrowser wb = new System.Windows.Forms.WebBrowser(); wb.DocumentCompleted += WebBrowserDocumentCompleted; wb.Visible = true; wb.ScrollBarsEnabled = false; wb.ScriptErrorsSuppressed = true; wb.Navigate(url); while (wb.ReadyState != System.Windows.Forms.WebBrowserReadyState.Complete) { Application.Current.Dispatcher.Invoke(DispatcherPriority.Background, new Action(delegate { })); } ``` Program just hangs in while loop, indefinitely. Any ideas?

Original source