0

私はアプリケーションに取り組んでおり、複数のスレッドを作成したいのですが、各スレッドはを作成する必要があり、これらはWebBrowserすべてメソッドを使用します。WebBrowserwebBrowser_DocumentCompleted

作成された各インスタンスは、すべてのインスタンスで同じメソッドではなく、WebBrowser独自のDocumentCompletedハンドラーを持つことができます。webBrowser_DocumentCompleted

私が説明します :

あるケースでは、単一のWebブラウザでの操作

int a = 0;
private void button1_Click(object sender, EventArgs e)
{
    methode1();
}

private void webBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    if (a == 1) methode2(wb);
    if (a == 2) methode2(wb);
}

public void methode1()
{
    webBrowser.Navigate("http://www.test.com");
    a = 1;
}

public void methode2()
{
    HtmlElement txt1 = webBrowser1.Document.GetElementById("tesxtbox1");
    txt1.SetAttribute("value", "test");
    webBrowser.Document.Forms[0].InvokeMember("submit");
    a = 2;
}

public void methode3()
{
    webBrowser.Navigate("http://www.test3.com");
}

しかし、複数の操作を行いたい場合、つまりbutoon1で、次を追加します。

private void button1_Click(object sender, EventArgs e)
{
    for(int i=0; i<5  ;i++)
        methode1();
}

それを行うには、いくつかのWebブラウザーが必要だと思うので、解決策は各操作のスレッドを作成することです。

private void button1_Click(object sender, EventArgs e)
{
    for(int i=0; i<5  ;i++)
    {
        Thread thread = new Thread(new ThreadStart(method1));
        thread.Start();
    }   
}

webBrowser_DocumentCompletedしたがって、スレッドによって作成された各Webブラウザーには、他のWebブラウザーの結果と混同しないように、独自のメソッドが必要です。

または、作成されたすべてのWebブラウザーに同じメソッドwebBrowser_DocumentCompletedを使用しますが、問題は、どのWebブラウザーを指定するか、メソッドwebBrowser_DocumentCompletedを呼び出す方法です。

4

1 に答える 1

0

あなたは自分のスレッドで複数の Web ブラウザーを作成しているわけではありません。

methode 関数で実際に webbrowser オブジェクトを作成してみる

private void button1_Click(object sender, EventArgs e)
        {
            for(int i=0;i<5;i++)
                methode1();
        }

public void methode1()
        {
            System.Windows.Forms.WebBrowser wBrowser = System.Windows.Forms.WebBrowser();
            wBrowser.DocumentCompleted +=webBrowser_DocumentCompleted;
            wBrowser.Navigate("http://www.test.com");
            a = 1;
        }

また、1 つの if ステートメントで a の両方の値を確認できることをご存知ですか?

if(a==1 || a==2)
     methode2(wb); 
于 2013-02-26T15:08:52.440 に答える