怎么在thread中打开一个窗体

原创 2006年06月21日 13:24:00

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

}

C#Form打开一个新窗口的同时关闭这个窗体

在第一个窗口中,名为fristForm,这个窗口有一个按钮,button1.第二个窗口为secondForm.         button1对应的代码为:       Private void ...
  • lkymmd
  • lkymmd
  • 2014年10月15日 19:58
  • 2086

ajax请求,重定向到一个新页面以及回调打开新窗体被拦截

ajax在请求完数据之后,重定向到一个新页面 "top.location.href"是最外层的页面跳转 "window.location.href"、"location.href"是本页面跳转 "p...

C# 怎么判断一个窗体打开

问题运行时出现Form1,然后点击一个按钮,就会跳出窗体Form2.如果再点击的话还会跳出一个窗口(因为我用的是new form ,重新创建了一个form2,所以会一直跳。) 我要的效果就是只能出来...

(转) c#中如何设计一个窗体关闭,另一个窗体打开?

本文转自:http://blog.csdn.net/anz130/article/details/6597610 form1窗体中有一个关闭按钮,单击这个按钮,form1窗体关闭了。form...

delphi 一个单元多个窗体

  • 2014年10月30日 19:35
  • 88KB
  • 下载

【前端插件】弹窗插件的编写【一】---编写一个窗体蓝本

最近要对一个类似webqq项目进行开发,但是里面的弹窗插件就很成问题了,例如:用了aerowindow lhgdialog及其他都不满意,没办法,只能自己山寨一个出来了,里面我将lhg的样式重写了一次...
  • cdnight
  • cdnight
  • 2013年05月31日 21:19
  • 1058

一个使用位图自绘窗体的例子

  • 2010年06月28日 17:32
  • 44KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:怎么在thread中打开一个窗体
举报原因:
原因补充:

(最多只允许输入30个字)