我正在使用C#编写聊天客户端/服务器应用程序,但是线程出了问题。我编写了这个简单的代码来展示我的问题。
我使用thread_1来显示窗体,但它只显示了一秒钟(也许thread_1已经终止并关闭了窗体,但IsAlive显示它仍然存活!)。Thread_2尝试访问在主线程上创建的texBox,但它显示:
“跨线程操作无效:从其他线程访问控件'textBox2'。”
我不知道如何解决第一个问题,但我使用BackgroundWorker解决了第二个问题,但我想使用线程来完成。有什么办法吗?
我使用thread_1来显示窗体,但它只显示了一秒钟(也许thread_1已经终止并关闭了窗体,但IsAlive显示它仍然存活!)。Thread_2尝试访问在主线程上创建的texBox,但它显示:
“跨线程操作无效:从其他线程访问控件'textBox2'。”
我不知道如何解决第一个问题,但我使用BackgroundWorker解决了第二个问题,但我想使用线程来完成。有什么办法吗?
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
Thread t1;
Thread t2;
private void button1_Click(object sender, EventArgs e)
{
t1 = new Thread(doThread1);
t1.Name = "thread_1";
t2 = new Thread(doThread2);
t2.Name = "thread_2";
t1.Start();
t2.Start();
MessageBox.Show(t1.IsAlive.ToString());
}
private void doThread1()
{
Form frm2 = new Form();
frm2.Show();
}
private void doThread2()
{
try
{
for (int j = 10000; j > 0; j--)
textBox.Text = j.ToString();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}