webBrowser.Navegue de forma síncrona

Quero chamar webBrowser.Navigate (string urlString) de forma síncrona onde webBrowser é o controle de formulários do Windows. Eu faço isso dessa maneira

...
private delegate void NavigateDelegate(string s);
...
private void Function()
{
    NavigateDelegate navigateDelegate = 
        new NavigateDelegate(this.webBrowser1.Navigate);
    IAsyncResult asyncResult = 
        navigateDelegate.BeginInvoke("http://google.com", null, null);

    while (!asyncResult.IsCompleted)
    {
        Thread.Sleep(10);
    }

    MessageBox.Show("Operation has completed !");
}

mas a mensagem nunca é empurrada. POR QUE esse código não funciona corretamente?

questionAnswers(2)

yourAnswerToTheQuestion