创建多线程
using System.Threading; 线程的命名空间
private void ThreadFunc() { Form temp = new Form(); temp.Show(); } private void button1_Click(object sender, System.EventArgs e) { //创建线程 FormThread = new Thread( new ThreadStart( ThreadFunc ) ); FormThread.Start(); //执行线程 }
这样写,若点击button按钮,被创建的窗体闪了一下就消失了,是因为在线程中建的窗体,所有的资源都是属于这个线程,所以当这个线程结束后,它的资源也被回收了,C#也就自动把窗体给关闭了。
正确的写法,用Invoke调用
private void button2_Click(object sender, EventArgs e) { Thread thread = new Thread(new ThreadStart(ThreadFunc)); thread.Start(); } private void ThreadFunc() { MethodInvoker mi = new MethodInvoker(ShowFrm); //创建委托 this.BeginInvoke(mi); //在创建控件的基础句柄所在线程上异步执行指定委托 } private void ShowFrm() { string[] info = new string[] {"张三","男"}; Form2 frm = new Form2(info); frm.Show(); }