我对线程很新。我开始这样一个线程:
Thread t_main;
t_main = new Thread(main_building_stuff);
t_main.Start();
在某些时候,我想在main_building_stuff中从一个加载到主线程中的webbrowser控件的网页中抓取一些数据。
我用这段代码做到了这一点:
HtmlElement lit = webBrowser1.Document.GetElementById("buildqueue");
但这会导致错误...... InvalidCastException(指定的强制转换无效)
从网络浏览器接收数据的正确方法是什么?
答案 0 :(得分:4)
有人回答了这个问题,给出了正确答案。但由于某种原因,他删除了它,所以谢谢你,但我不记得你的名字......
这是有效的代码:
webBrowser1.Invoke(new Action(() => {
HtmlElement lit = webBrowser1.Document.GetElementById("buildqueue");
result = "whatever";
}));
答案 1 :(得分: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
,我想知道你是否从另一个名称空间中导入了一个。