c#窗体多线程无效
- C# code
private void button1_Click(object sender, EventArgs e) { textBox1.Text = "a"; textBox2.Text = "b"; Thread t1 = new Thread(new ThreadStart(Thread1)); t1.Start(); Thread t2 = new Thread(new ThreadStart(Thread2)); t2.Start(); } public void Thread1() { if (this.InvokeRequired) { this.Invoke(new Action(Thread1)); } else { int i = 0; for (i = 0; i < 100; i++) { textBox1.Text = "a" + i.ToString(); Thread.Sleep(0); //Application.DoEvents(); } } } public void Thread2() { if (this.InvokeRequired) { this.Invoke(new Action(Thread2)); } else { int i = 0; for (i = 0; i < 100; i++) { textBox2.Text = "b" + i.ToString(); Thread.Sleep(10); //Application.DoEvents(); } } }
程序可以运行,结果是当2运行完,1和2一起显示。请问如何做到他俩分别显示,谁运行完谁显示,不要一起显示。1和2的Thread.Sleep有区别
[解决办法]
Thread1 和 Thread2 两个方法改动下
- C# code
public void Thread1(){ int i = 0; for (i = 0; i < 100; i++) { this.Invoke((MethodInvoker)(() => textBox1.Text = "a" + i.ToString())); Thread.Sleep(10); }}public void Thread2(){ int i = 0; for (i = 0; i < 100; i++) { this.Invoke((MethodInvoker)(() => textBox2.Text = "b" + i.ToString())); Thread.Sleep(10); }}