从ThreadPool C#中更改文本框内容

时间:2011-08-29 00:33:52

标签: c# multithreading

我正在使用线程池进行一些测试,如何更改表单中的Textbox.text?

        ThreadPool.SetMaxThreads(3, 3);

        for(int i2 = 0; i2 < 100; i2++)
        {
            ThreadPool.QueueUserWorkItem(myInt, i2);
        }
        void myInt(object obj23)
    {
        int value = (int)obj23;
        writeTo(value);
       // code to write textbox1.text += value + "\n";
        Thread.Sleep(10000);

    }

错误是因为没有创建对象的线程(textbox1)正在尝试更改它

1 个答案:

答案 0 :(得分:3)

为您创建一个简单的样本......

    private void Form1_Load(object sender, EventArgs e)
    {
        for (int i = 0; i < 100; i++)
        {
            System.Threading.ThreadPool.QueueUserWorkItem(k => {

                textBox2.Invoke(new Action(() => {
                    textBox2.AppendText("k:" + k + "\r\n");
                }));

            } , i);
        }
    }