public partial class Form1 : Form
{
private delegate void ThreadWork(int i);
Thread thread; public Form1()
{
InitializeComponent();
}
private void button1_Click_1(object sender, EventArgs e)
{
this.richTextBox1.Text = "程序开始:\r\n";
UpdateText();
mll();
} public void UpdateText()
{
thread = new Thread(new ThreadStart(CrossThreadFlush));
//thread.IsBackground = true;
thread.Start();
} public void mll()
{
for (int m = 1; m < 5; m++)
{
this.richTextBox2.Text = string.Format("第{0}个\t{1:mm-ss}\r\n", m, DateTime.Now) + this.richTextBox2.Text;
this.richTextBox2.Refresh();
Thread.Sleep(500);
}
} private void CrossThreadFlush()
{
while (true)
{ for (int i = 1; i < 100; i++)
{
ThreadFunction(i);
Thread.Sleep(500);
}
}
} private void ThreadFunction(int i)
{
if (this.richTextBox1.InvokeRequired)//等待异步
{
ThreadWork fc = new ThreadWork(ThreadFunction);
this.Invoke(fc, new object[1] { i });
}
else
{
this.richTextBox1.Text = string.Format("第{0}个\t{1:mm-ss}\r\n", i, DateTime.Now) + this.richTextBox1.Text;
this.richTextBox1.Refresh(); }
}
}
{
private delegate void ThreadWork(int i);
Thread thread; public Form1()
{
InitializeComponent();
}
private void button1_Click_1(object sender, EventArgs e)
{
this.richTextBox1.Text = "程序开始:\r\n";
UpdateText();
mll();
} public void UpdateText()
{
thread = new Thread(new ThreadStart(CrossThreadFlush));
//thread.IsBackground = true;
thread.Start();
} public void mll()
{
for (int m = 1; m < 5; m++)
{
this.richTextBox2.Text = string.Format("第{0}个\t{1:mm-ss}\r\n", m, DateTime.Now) + this.richTextBox2.Text;
this.richTextBox2.Refresh();
Thread.Sleep(500);
}
} private void CrossThreadFlush()
{
while (true)
{ for (int i = 1; i < 100; i++)
{
ThreadFunction(i);
Thread.Sleep(500);
}
}
} private void ThreadFunction(int i)
{
if (this.richTextBox1.InvokeRequired)//等待异步
{
ThreadWork fc = new ThreadWork(ThreadFunction);
this.Invoke(fc, new object[1] { i });
}
else
{
this.richTextBox1.Text = string.Format("第{0}个\t{1:mm-ss}\r\n", i, DateTime.Now) + this.richTextBox1.Text;
this.richTextBox1.Refresh(); }
}
}
本来是想在第一个textbox(richTextbox1)框显示委托的thread线程的方法,在richTextbox2显示主线程mll()方法,本来预想是两个文本框同时显示执行的。可是发现只有当主线程mll()方法执行完之后才会执行UpdateText();这是为什么呢??