日期:2014-05-18  浏览次数:20771 次

●●加班在线等,如何让线程加载一个窗体?谢谢◆◆◆◆
因为一些需要,想在一个线程中打开另一个窗体,一直搞不定.
                private   Form2   f;
                private   void   button1_Click(object   sender,   EventArgs   e)
                {
                        ........
                        Thread   th   =   new   Thread(new   ThreadStart(a));
                        th.Start();

                        .......

              }
                private   void   a()
                {
                                f   =   new   Form2();
                                f.Show();
                                f.s();   //f.s   是启动窗体2中的一个线程
                }

把其他功能都屏蔽掉了,就剩这几句,Form2是另外一个窗体.
我点击button时,form2只是闪了一下就没了,是不是线程运行完了窗体也销毁了呢?
但是f.s()启动的线程还在跑.

如果我把线程改成为
                private   void   a()
                {
                                f   =   new   Form2();
                                f.Show();
                                f.s();   //f.s   是启动窗体2中的一个线程
                                while(true)
                                {
                                      Thread.Sleep(100);
                                  }
                }
窗体2就能出来了,但是一直是系统忙碌的漏斗鼠标.

求教一下,此简单功能如何实现.
加班在线等一个答案!!
在此感谢了


------解决方案--------------------
up
------解决方案--------------------
在线程里,可以直接使用Application.Run(form)来打开一个窗体。

比如:

Form f=new Form();
Application.Run(f);

但这个用法仅在线程中。
------解决方案--------------------
在主窗体里面用一个方法

Func1(){
f = new Form2();
f.Show();
}

线程里面 this.BeginInvoke这个方法
------解决方案--------------------
up
楼上