0

Web ドキュメントからハイパーリンクを抽出しようとすると問題が発生します。

私が使用しようとしているアプローチを以下に示します。

HtmlElementCollection ht = wb.Document.Links;

foreach (HtmlElement item in ht)
{
    if (item.GetAttribute("href").Contains("name"))
    {
        linkList.Add(item.GetAttribute("href"));
    }
}

このコードを実行すると、「指定されたキャストが無効です」というエラーが表示されます。問題は、このコードを実行するメソッドが webbrowser とは別のスレッドで呼び出されるという事実にあると思います。同じスレッドで、メソッドの呼び出しに問題はありません。

4

2 に答える 2

1

私が見つけた解決策は、「コードを取得するリンク」を別のメソッドに配置し、メインスレッド(ブラウザが実行されている場所)でメソッドを呼び出すことです。

BeginInvoke(new MethodInvoker(delegate() { getUsers(webBrowser1, linkList); }));

于 2013-05-02T18:15:16.283 に答える