我正在使用线程池进行一些测试,如何更改表单中的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)正在尝试更改它
答案 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);
}
}