2

私はスレッド化に非常に慣れていません。次のようなスレッドを開始します。

Thread t_main;
t_main = new Thread(main_building_stuff);
t_main.Start();

そして、ある時点で、main_building_stuff で、メイン スレッドの webbrowser コントロールにロードされた web ページからいくつかのデータを取得したいと考えています。

私はこのコードでそれをやっています:

HtmlElement lit = webBrowser1.Document.GetElementById("buildqueue");

しかし、それはエラーになります... InvalidCastException (指定されたキャストが無効です)

ウェブブラウザからデータを受け取る正しい方法は何ですか?

4

2 に答える 2

4

質問に答えた人は、正しい答えを出しました。だけどなぜか消してしまったので、ありがたいのですが、お名前は覚えていません…

これは機能するコードの一部でした:

webBrowser1.Invoke(new Action(() => {
                    HtmlElement lit = webBrowser1.Document.GetElementById("buildqueue");
                    result = "whatever";
                }));
于 2012-09-12T10:46:58.430 に答える
1

うーん。

System.Windows.Forms.HtmlDocument.GetElementById()間違いなく a を返しますSystem.Windows.Forms.HtmlElement

変更するとどうなるか

HtmlElement lit = webBrowser1.Document.GetElementById("buildqueue");

System.Windows.Forms.HtmlElement lit = webBrowser1.Document.GetElementById("buildqueue");

まだ無効なキャスト エラーが発生しますか?

たまたま、よく使われる複数のクラスが呼び出されていることを知りHtmlElementました。別の名前空間からインポートされたものがあるのではないかと思います。

于 2012-09-12T10:44:39.077 に答える