À l'aide de WebBrowser dans une application console

Je veux l'utiliser pour invoquer certains scripts JS sur la page web. J'ai ceci:

    static void Stuff()
    {
        WebBrowser browser = new WebBrowser();
        browser.Navigate("http://www.iana.org/domains/example/");
        HtmlDocument doc = browser.Document;
        //doc.InvokeScript("someScript");
        Console.WriteLine(doc.ToString());
    }

    static void Main(string[] args)
    {
        Console.WriteLine("hi");
        var t = new Thread(Stuff);
        t.SetApartmentState(ApartmentState.STA);
        t.Start();
    }

Question 1: j'obtiens un "objet de référence non définie" exception lorsque j'essaie d'obtenir doc.ToString(). Pourquoi?

Question 2: Comment puis-je obtenir des données à partir d'un document HTML dans le programme principal? WebBrowser nécessite un thread séparé, ce qui nécessite une méthode statique qui ne peut pas renvoyer une valeur. Comment puis-je retourner, disons, doc à la Main() si je peux faire quelque chose avec elle?

Méthodes statiques en fait peut retourner une valeur. C'est threads qui ne le peuvent pas. Aussi, les threads utiliser une non-méthode statique.
Pourquoi cela est-il downvoted?

OriginalL'auteur Hui | 2011-06-12