Если просто попытаться создать новый поток с WebBrowser, то получим следующее сообщение:
Дополнительные сведения: Создание экземпляра элемента управления ActiveX '...' невозможно: текущий поток не находится в однопоточном контейнере.
Решается очень просто
Thread ThA = new Thread(
() => {
LoginForm LoginFormInstance = new LoginForm();
LoginFormInstance.Show();
LoginFormInstance.Browser.Navigate(this.GetLoginUri());
Application.Run();
}
);
ThA.SetApartmentState(ApartmentState.STA);
ThA.Start();
// ждем завершения потока
ThA.Join();
ApartmentState.STA - The Thread will create and enter a single-threaded apartment. ("Объект Thread создаст однопоточный апартамент и войдет в него." - согласно русскому мсдн. Звучит коряво, но смысл в целом понятен xD).