我正在用 c# 编写聊天客户端/服务器应用程序,但线程有问题。我写了这个简单的代码来显示我的问题。
我使用 thread_1 来显示 Form 但它只显示一秒钟(也许 thread_1 终止并关闭了 Form ,但我 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);
}
}
}