Operating a runtime webbrowser control from a background thread vb.net-Collection of common programming errors
The Control.InvokeRequired and Invoke members use the Handle property to figure out what thread owns the control. Problem is, the Handle is null for the web browsers that you created. A control only has a valid handle when you made it visible on a form. Which you didn’t do. It will then try to create the handle but that’s a fail whale, an ActiveX control like WebBrowser needs a valid Parent. Without Me.Control.Add(), as was done in your original version, it won’t have one.
The workaround is simple, you just need another control with a valid Handle property. Any will do, it only cares about the thread that owns the handle, not the value of the handle.
You have one: your form. Use Me.InvokeRequired
and Me.Invoke()
instead. Or Application.OpenForms(0) if you can’t easily get a reference to the form object, best avoided.