C#多线程问题,当一个子线程死循环时。为什么主界面不能操作?

在VS2008中用C#建立了一Form。上面有一个按钮和一个列表框。当单击按钮的时候就启动一个线程用于不停的像列表框中添加数据。但主界面就不能操作了。
源代码:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private delegate void SetTextCallback();
private void send()
{
while (true)
{
listBox1.Items.Add("aaaa\n");
}
}
private void test()
{
SetTextCallback stcb = new SetTextCallback(send);
Invoke(stcb);
}

private void button1_Click(object sender, EventArgs e)
{
Thread th = new Thread(new ThreadStart(test));
th.Start();
}
}

第1个回答  推荐于2016-11-01
public Form1()
{
CheckForIllegalCrossThreadCalls = false;
InitializeComponent();
}
这个地方加上这样一句!就OK了追问

谢了。。我刚解决了。。循环要在这个函数里
private void test()
{
SetTextCallback stcb = new SetTextCallback(send);
Invoke(stcb);
}

本回答被提问者采纳
第2个回答  2011-11-14
点击按钮为什么不直接让线程运行send()方法?追问

测试多线程

相似回答