我有 WebBrowser 控件,我正在调用一个函数来从线程中获取所有控件 ID。当我从 UI 线程调用它时,这些函数可以工作,但如果从单独的线程调用,则无法获得任何控制。
我迷路了请帮忙
调用:
List<WebOparator.WebOparator.WebControls> wcList = oparator.GetAllControlName();
int tryCount = 0;
do
{
if (wcList.Count == 0)
{
tryCount++;
Thread.Sleep(2000);
wcList = oparator.GetAllControlName();
}
if (tryCount >= 5) break;
} while (wcList.Count == 0);
方法:
public List<WebControls> GetAllControlName()
{
List<WebControls> names = new List<WebControls>();
if (this.InvokeRequired)
{
this.BeginInvoke((MethodInvoker)delegate
{
int i = 0;
foreach (HtmlElement element in myBrowser1.Document.All)
{
if (element.Id != null)
{
i++;
names.Add(new WebControls() { sl = i, ID = element.Id, TagName = element.TagName });
}
}
});
}
else
{
int i = 0;
foreach (HtmlElement element in myBrowser1.Document.All)
{
if (element.Id != null)
{
i++;
names.Add(new WebControls() { sl = i, ID = element.Id, TagName = element.TagName });
}
}
}
return names;
}
编辑:
我发现该函数循环遍历所有控件并将它们添加到列表中,但返回一个空列表....