Правильная идея, неправильное исполнение.WebBrowser.Navigate () только сообщает веб-браузеру начать переход на запрашиваемую веб-страницу.Это обычно занимает сотни миллисекунд.Internet Explorer внутренне запускает потоки, чтобы выполнить работу.Он сообщает вам, когда это сделано, вызывая событие DocumentCompleted.Вы не ждете этого, так что это сначала город аварий.
Следующая проблема заключается в том, что событие DocumentCompleted не будет вызываться в вашем коде.Вы должны соблюдать контракт STA, он требует прокачки цикла сообщений.Это всемогущий способ, которым фоновый поток, такой как тот, который IE использует для извлечения веб-страницы, сообщает вашему потоку, что работа выполнена.
Стандартный код, который вам нужендоступно в этот ответ .