在线程中显示表单 - C#

时间:2014-01-19 20:43:30

标签: c# multithreading

看看这段代码:

static Thread t1;
static ThreadStart ts1;

void my()
{
    this.Hide();
    Form2 frm2 = new From2();
    frm2.Show();
}

private void button1_Click(object sender, EventArgs e)
{
    ts1 = new ThreadStart(my);
    t1 = new Thread(ts1);
    t1.Start();
}

my函数中有一些代码隐藏了这个表单并打开了form2但是有一个问题。运行t1并打开form2时,t1已完成,因此form2也将关闭!

我该怎么做才能解决这个问题?

由于

2 个答案:

答案 0 :(得分:2)

在UI线程上执行所有UI调用。总是。在UI线程上隐藏和打开表单。

答案 1 :(得分:0)

更改方法:

void my()
        {
            this.Invoke((MethodInvoker)delegate
            {
                this.Hide();
                Form frm2 = new Form();
                frm2.Show();
            });
        }