重複の可能性:
新しいスレッドの WebBrowser コントロール
Web ページ上の特定の要素のクリックを自動化し、クリックするたびに新しい IE ウィンドウを生成しようとしています。
以下のコードは、クリックする必要がある要素 ID を含む 1 つの列を持つ DataTable を読み取ります。次に、テーブルを循環し、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();
}
}