灰太狼的博客

除了照顾红太狼,小灰灰,抓喜洋洋外,我这个灰太狼还要写程序。

怎么在thread中打开一个窗体

有很多朋友不知道怎么在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();

}

阅读更多
文章标签: thread button object c#
个人分类: C#相关知识
上一篇如何使MDI子窗体不重复被打开
下一篇windows form (窗体) 之间传值小结
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭