首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

c#窗体多线程无效,该怎么处理

2012-06-20 
c#窗体多线程无效C# codeprivate void button1_Click(object sender, EventArgs e){textBox1.Text at

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);    }} 

热点排行