This is not true. WebBrowser uses Internet Explorer, which is a COM component. COM components have a stream model, IE uses "Apartment". This is an expensive word that means that it is not thread safe. You can call its methods in BGW, but COM will automatically march the call into the UI thread. Since all method calls and property accesses actually occur in the user interface thread, you will do this more slowly with BGW.
In fact, you can run WebBrowser in another thread, you will need to create an instance of this thread. And you will need to create a stream, which is the so-called Single Threaded Apartment. STA, an abbreviation that you can easily recognize from the [STAThread] attribute in the Main () method of a Winforms or WPF application. To change the workflow to STA, you need to call Thread.SetApartmentState () before starting it. You cannot do this for BGW. And the thread must pump the message loop to implement the STA contract, it must call Application.Run (). For example, you need to force WebBrowser to raise its events. This answer shows the approach.
Consider using the WebRequest class.
Hans passant
source share