C# winform中关闭子窗体同时关闭该子窗体中的线程
子窗体的构造函数中开启线程(start),CPU立马标到50%,子窗体是用非模态方式打开(ShowDialog)。现在的问题是,我在关闭了子窗体后CPU仍旧是50%(只是...
子窗体的构造函数中开启线程(start),CPU立马标到50%,子窗体是用非模态方式打开(ShowDialog)。现在的问题是,我在关闭了子窗体后CPU仍旧是50%(只是关闭了子窗体,不是关闭了整个应用程序),即在子窗体中运行的线程还没有关闭。
thread.isbackgroud是说整个应用程序结束时才释放,应该是行不通的。
我想应该是在formclosing事件中执行相关操作,请大侠们教教我,该怎么做才能使子窗体关闭时线程自动关闭,同时子窗体打开线程又可以正常启动。
请各位大侠耐心些帮帮我,回答得尽量详细些,二楼那些很明显就是夸夸而谈,未经过实践。你以为这些简单的start和abort我不会用吗,我就是试过不可以才来这请教的嘛。 展开
thread.isbackgroud是说整个应用程序结束时才释放,应该是行不通的。
我想应该是在formclosing事件中执行相关操作,请大侠们教教我,该怎么做才能使子窗体关闭时线程自动关闭,同时子窗体打开线程又可以正常启动。
请各位大侠耐心些帮帮我,回答得尽量详细些,二楼那些很明显就是夸夸而谈,未经过实践。你以为这些简单的start和abort我不会用吗,我就是试过不可以才来这请教的嘛。 展开
4个回答
展开全部
如果只存在一个线程,那么可以在子窗体类中申明一个 Thread 类成员变量保存你所创建的线程对象,在 FormClosed 事件中调用 Thread.Abort() 方法终止该线程。
若存在多个线程,使用 ArrayList 或 List<Thread> 集合保存所有创建的线程对象,在 FormClosed 事件中(或 FormClosing 事件):
// 终止所有线程
foreac(Thread thread in 集合对象)
thread.Abort();
若存在多个线程,使用 ArrayList 或 List<Thread> 集合保存所有创建的线程对象,在 FormClosed 事件中(或 FormClosing 事件):
// 终止所有线程
foreac(Thread thread in 集合对象)
thread.Abort();
展开全部
子窗体关闭调用关闭的方法
.Abort();
打开的时候调用打开的方法,然后.Start()
.Abort();
打开的时候调用打开的方法,然后.Start()
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Application.ExitThread();
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
让线程睡眠就可以了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询