public Form1()
{
InitializeComponent(); Thread t = new Thread(new ThreadStart(RecevieMsg));//多线程
t.Name = "Recive Name";
t.IsBackground = true;
t.Start();
}
//另一个线程
private void RecevieMsg()
{
while (true)
{
richTextBox1.Text += "abc";//线程间操作无效
}
}
希望高手指点!!
/// <summary>
/// 定义一个委托
/// </summary>
private delegate void CrossThreadOperationControl(); private void RecevieMsg()
{
CrossThreadOperationControl CrossDelete = delegate()
{ while (true)
{
richTextBox1.Text += "abc";//线程间操作无效
}
}
richTextBox1.Invoke(CrossDelete);
}
Control.CheckForIllegalCrossThreadCalls = false
CheckForIllegalCrossThreadCalls = false;
禁止:检查非法的跨线程调用
这个方法最简单,如果没有多个线程同时修改的话,就可以用这个了。
如果有多个线程修改一个控件,就不能这样了,必须做线程同步!
//另一个线程
private void RecevieMsg()
{
while (true)
{
richTextBox1.Invoke(new MyDelelate(SetText), "abc"); }
}private void SetText(object sText)
{
richTextBox1.Text += sText.ToString();
}
{
InitializeComponent(); Thread t = new Thread(new ThreadStart(RecevieMsg));//多线程
t.Name = "Recive Name";
t.IsBackground = true;
t.Start();
} private delegate void MyDelelate(object sText);
private void RecevieMsg()
{
while (true)
{
richTextBox1.Invoke(new MyDelelate(SetText), "abc");
}
} private void SetText(object sText)
{
richTextBox1.Text += sText.ToString();
}