怎么在thread中打开一个窗体

标签: threadbuttonobjectc#
2000人阅读 评论(3) 收藏 举报
分类:

有很多朋友不知道怎么在thread中打开一个窗体,总是说没有反应,下面我就说说这方面自己的经验。代码如下:

 

private void ThreadFunc()

{

    //run your coding;

    Form temp = new Form();

    temp.Show();

    //run your coding;

}

private void button1_Click(object sender, System.EventArgs e)

{

    FormThread = new Thread( new ThreadStart( ThreadFunc ) );

    FormThread.Start();

}

 

像上面的代码,若点击button按钮,大家可以看到被创建的窗体闪了一下,就消失了,这是因为你在线程中建的窗体,所有的资源都是属于这个线程的,所以当这个线程结束后,它的资源也被回收了,当然C#也就自动把窗体给关闭了。

    正确的方法是用Invoke调用,代码如下:

private void ThreadFunc()

{

    MethodInvoker mi = new MethodInvoker(this.ShowForm);

    this.BeginInvoke(mi);

}

private void ShowForm(  )

{

    Form temp = new Form();

    temp.Show();

}

private void button1_Click(object sender, System.EventArgs e)

{

    FormThread = new Thread( new ThreadStart( ThreadFunc ) );

    FormThread.Start();

}

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1851357次
    • 积分:15847
    • 等级:
    • 排名:第662名
    • 原创:152篇
    • 转载:27篇
    • 译文:16篇
    • 评论:872条
    最新评论