可能重复:
新线程中的 WebBrowser 控件
我正在尝试自动单击网页上的某些元素,然后在每次单击时生成一个新的 IE 窗口。
下面的代码读取一个 DataTable,其中一列包含我需要单击的元素 ID。然后循环表格并单击 Webbrowser 中所需的元素webNav.webBrowser1
。
该代码第一次运行时运行良好,但此后不再有点击事件。如果我逐步使用断点,那么我可以看到代码运行良好,没有问题。看起来好像它正在安排永远不会触发的操作。
这是我第一次尝试使用线程,所以我可能会做一些根本错误的事情。
目前我有点难过问题是什么?
[STAThread]
private void ClickOptions()
{
DataTable _dataTableTestClone = new DataTable();
_dataTableTestClone = _dataTableTest;
if (_dataTableTest != null)
{
var thread = new Thread(() =>
{
foreach (DataRow row in _dataTableTestClone.Rows)
{
string getclickID = row["ID"].ToString();
webNav.webBrowser1.Invoke(new Action(() =>
{
HtmlElement lit = webNav.webBrowser1.Document.GetElementById(getclickID);
if (lit != null)
{
lit.InvokeMember("click");
}
}));
Thread.Sleep(2000);
}
});
thread.SetApartmentState(ApartmentState.STA);
thread.IsBackground = true;
thread.Start();
}
}