读书人

●加班,怎么让线程加载一个窗体?多谢◆

发布时间: 2012-01-02 22:40:04 作者: rapoo

●●加班在线等,如何让线程加载一个窗体?谢谢◆◆◆◆
因为一些需要,想在一个线程中打开另一个窗体,一直搞不定.
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
楼上

读书人网 >C#

热点推荐