-2
 Thread main;

    public void bomb()
    {
        string link = textBox1.Text;


        for (int i = 0; i <= richTextBox1.Lines.Length; i++)
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://" + link + "/");
            WebProxy myproxy = new WebProxy(this.richTextBox1.Lines[i], false);
            //request.Proxy = myproxy;
            request.Method = "GET";
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            label1.Invoke((MethodInvoker)delegate { label1.Text = i.ToString(); });
        }


    }

    private void button1_Click(object sender, EventArgs e)
    {

        main = new Thread(bomb);
        main.Start();

    }

ただし、行:richTextBox1.Lines.LengthおよびrichTextBox1.Lines。[i]

エラーの生成:

クロススレッド操作が無効です:コントロール'richTextBox1'は、それが作成されたスレッド以外のスレッドからアクセスされました。

richtextboxからテキストを取得したい場合はすべてOKですが、行を取得したい場合はエラーが発生します。

ありがとう。

4

1 に答える 1

1

と同じようInvokeにアクセスするために使用しますrichTextBox1.Lineslabel1

var lines = (string[])richTextBox1.Invoke(
                           (Func<string[]>)(() => this.richTextBox1.Lines));

同じことが当てはまりますtextBox1

于 2012-07-16T14:33:27.343 に答える