arash Dman
arash Dman

Reputation: 333

How to use web browser object in background worker in C#

I have problem with code below. Can some one tell why it doesn't work in BackgroundWorker and how can i solve this problem

  string address = "My URL";
            webBrowser.Navigate(new Uri(address));
            do
            {
                Application.DoEvents();
            } while (webBrowser.ReadyState != WebBrowserReadyState.Complete);

Upvotes: 0

Views: 4583

Answers (1)

Odys
Odys

Reputation: 9090

No!!

You better open a new thread and instruct the WebBrowser from there

Application.DoEvents() is kinda evil.

Here is how you can start

System.Threading.Thread t = new System.Threading.Thread(() =>
{
    yourWebBrowser.Navigate("http://Google.com");
});

t.ApartmentState = System.Threading.ApartmentState.STA;
t.Start();

To get notified that the page has been loaded you can subscribe to the DocumentCompleted event as so:

yourWebBrowser.DocumentCompleted += WebBrowserDocumentCompleted;

void WebBrowserDocumentCompleted(object sender, System.Windows.Forms.WebBrowserDocumentCompletedEventArgs e)
{
    throw new NotImplementedException();
}

Upvotes: 1

Related Questions