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