C# 多线程的问题,不能同时显示

来源:百度知道 编辑:UC知道 时间:2024/06/22 08:42:34
//描述:2个线程。线程1从1循环到10000,线程2从1循环到20000,结果分别在其下文本框中显示。
//问题:当点击[线程1-开始]按钮时,textbox1显示,立刻点击[线程2-开始]按钮,不能同时在2个文本框内显示线程的内容,而是线程1完毕之后才显示线程2的结果,为什么不能同时显示?程序中加过“Invoke()”,请大牛们帮忙!
public Thread t1, t2;
public Form1()
{
InitializeComponent();
}
delegate void SetTextCallback(string text,string ss);
private void button1_Click(object sender, EventArgs e)
{ //开始
t1 = new Thread(new ThreadStart(fill_text1));
t1.Start();
this.txt_1_d1.Text = DateTime.Now.ToString("hh:mm:ss ms"); //记录开始时间
}
private void button4_Click(object sender, EventArgs e)
{//暂停线程1
if (t1.ThreadState == ThreadState.Running || t1.ThreadState==ThreadState.WaitSleepJoin) t1.Suspend();
else if (t1.ThreadState == ThreadState.Suspended) t1.Resume();
}
private

private void fill_text1()
{
for (int i = 0; i < 10000; i++)
{
SetText(i.ToString(), DateTime.Now.ToString("hh:mm:ss ms"));
Thread.Sleep(100);
}
}
private void SetText(string text,string datetimes)
{
if (this.InvokeRequired)
{
this.Invoke(new SetTextCallback(SetText), new object[] {text,datetimes }); //
}
else
{

this.textBox1.Text = text; //记录当前值
this.txt_1_d2.Text = datetimes; //记录现在时间
}
}
private void fill_text2()
{
int i = 0;
while (i <= 20000)
{
SetText2(i.ToString(), DateTime.Now.ToString("hh:mm:ss ms"));