2

我对线程很陌生。我开始这样的线程:

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

在某些时候,我希望在 main_building_stuff 中从加载到主线程中的 webbrowser 控件中的网页中获取一些数据。

我正在用这段代码做到这一点:

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()肯定会返回一个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 回答