线程中打开一个form的问题

gou4 2003-12-08 03:00:46
线程中打开一个form:
void thread()
{
Form1 form = new Form1()
form.Show();
......
}
线程中所有语句结束后form也自动关闭了,怎么解决呢?
我试过这种方法
void thread()
{
Form1 form = new Form1()
form.Show();
while(form.Closed)
{
}
......

}
但form 不能正常打开,系统把所有资源都放在处理循环上了,这又有什么方法解决呢?

如果是这样的话,可打开,但不知怎么关:

void thread()
{
Form1 form = new Form1()
Application.Run(form);
......
}
高手们请提提看法
...全文
37 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
gabriel1 2003-12-11
  • 打赏
  • 举报
回复
Form1 form = new Form1()这个语句放在函数外面,定义为全局或者局部对象
KentYu 2003-12-11
  • 打赏
  • 举报
回复
private ISynchronizeInvoke synchronizer;
private Form threadForm;

private void button1_Click(object sender, System.EventArgs e)
{
Thread demoThread=new Thread(new ThreadStart(run));
demoThread.Start();

}
public void run()
{
threadForm=new Form();
synchronizer = threadForm;
Application.Run(threadForm);
}

private void button2_Click(object sender, System.EventArgs e)
{
if(synchronizer.InvokeRequired)
{
MethodInvoker invoker =
new MethodInvoker(threadForm.Close);
synchronizer.Invoke(invoker,null);
}
else
threadForm.Close();
}
gou4 2003-12-11
  • 打赏
  • 举报
回复
好像是这样的,谢谢各位
fwc888 2003-12-08
  • 打赏
  • 举报
回复
你新建的 form 对象 的生命周期 是在 thread 函数内,函数结束 自然 form 也被关闭了。
可以 将 对象 保存在全局 数据结构中。
KentYu 2003-12-08
  • 打赏
  • 举报
回复
http://www.yesky.com/20030225/1653758.shtml

110,561

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧