La función de navegación de WebBrowser no funciona y los manejadores no se llaman

Código abajo.

Estoy intentando navegar a un sitio web y leer información, el problema es que Navigate no funciona, el único evento al que se llama es Navegar y la URL impresa está vacía, los otros eventos nunca se llaman. ¿Qué me estoy perdiendo? ¿Tengo que usar la clase Form para navegar? ¿No puedo usarlo programáticamente desde una aplicación de consola?

Por favor ayuda.

class WebNavigator
{
    private readonly WebBrowser webBrowser;

    public WebNavigator()
    {
        webBrowser = new WebBrowser
        {
            AllowNavigation = true
        };

        webBrowser.Navigated += webBrowser_Navigated;
        webBrowser.Navigating += webBrowser_Navigating;
        webBrowser.DocumentCompleted += webBrowser_DocumentCompleted;
    }

    // Navigates to the given URL if it is valid. 
    public void Navigate(string address)
    {
        if (String.IsNullOrEmpty(address)) return;
        if (address.Equals("about:blank")) return;
        if (!address.StartsWith("http://") &&
            !address.StartsWith("https://"))
        {
            address = "http://" + address;
        }
        try
        {
            Trace.TraceInformation("Navigate to {0}", address);
            webBrowser.Navigate(new Uri(address));
        }
        catch (System.UriFormatException)
        {
            Trace.TraceError("Error");
            return;
        }
    }

    // Occurs when the WebBrowser control has navigated to a new document and has begun loading it.
    private void webBrowser_Navigated(object sender, WebBrowserNavigatedEventArgs e)
    {
        Trace.TraceInformation("Navigated to {0}", webBrowser.Url);
    }

    // Occurs before the WebBrowser control navigates to a new document.
    private void webBrowser_Navigating(object sender, WebBrowserNavigatingEventArgs e)
    {
        Trace.TraceInformation("Navigating to {0}", webBrowser.Url);
    }

    private void webBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
        var wb = sender as WebBrowser;
        Trace.TraceInformation("DocumentCompleted {0}", wb.Url);
    }
}

Respuestas a la pregunta(3)

Su respuesta a la pregunta