C# winform中关闭子窗体同时关闭该子窗体中的线程

子窗体的构造函数中开启线程(start),CPU立马标到50%,子窗体是用非模态方式打开(ShowDialog)。现在的问题是,我在关闭了子窗体后CPU仍旧是50%(只是关闭了子窗体,不是关闭了整个应用程序),即在子窗体中运行的线程还没有关闭。

thread.isbackgroud是说整个应用程序结束时才释放,应该是行不通的。
我想应该是在formclosing事件中执行相关操作,请大侠们教教我,该怎么做才能使子窗体关闭时线程自动关闭,同时子窗体打开线程又可以正常启动。
请各位大侠耐心些帮帮我,回答得尽量详细些,二楼那些很明显就是夸夸而谈,未经过实践。你以为这些简单的start和abort我不会用吗,我就是试过不可以才来这请教的嘛。

如果只存在一个线程,那么可以在子窗体类中申明一个 Thread 类成员变量保存你所创建的线程对象,在 FormClosed 事件中调用 Thread.Abort() 方法终止该线程。

若存在多个线程,使用 ArrayList 或 List<Thread> 集合保存所有创建的线程对象,在 FormClosed 事件中(或 FormClosing 事件):
// 终止所有线程
foreac(Thread thread in 集合对象)
thread.Abort();
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-05-27
子窗体关闭调用关闭的方法
.Abort();

打开的时候调用打开的方法,然后.Start()
第2个回答  2009-05-27
Application.ExitThread();
第3个回答  2009-05-27
让线程睡眠就可以了
相似回答