私は ac# プログラムを持っています。プログラムの form1 は、ときどき別のスレッドで form3 の新しいインスタンスを作成します。したがって、各 form3 インスタンスにはこれらのメソッドが含まれています。2 つのスレッドが同じメソッドを同時に呼び出した場合、または別のスレッドが既にそれらのメソッドを使用しているときに、問題が発生したと思われます。特に、同じウェブブラウザ名を持っているため
private void vent()
{
while (wb.ReadyState != WebBrowserReadyState.Complete)
{
Application.DoEvents();
}
}
public bool containss(string SearchText)
{
string page = wb.Document.Body.InnerText;
if (page.ToLower().Contains(SearchText.ToLower()))
return true;
else return false;
}
この contains() メソッドの問題は、それが動作することです
string page = wb.Document.Body.InnerHtml;
そしてそうではない
string page = wb.Document.Body.InnerText;
オブジェクト参照がオブジェクトのインスタンスに設定されていません。この行で:
if (page.ToLower().Contains(SearchText.ToLower()))
私は次のようにスレッドを作成します。
private void ThreadProc()
{
Form frm = new Form3(currentAB);
frm.ShowDialog();
}
Thread ab1 = new Thread(new ThreadStart(ThreadProc));
ab1.SetApartmentState(ApartmentState.STA);
ab1.Start();