两个按钮,一个开启线程,一个停止线程
下面1是第一组方法,2是第二组方法
停止:
1、Abort() 方法可以终止线程,但该Thread类的实例(假设是connThread)却并不为null
2、join() 方法,不知道为什么,调试时到了这条代码就跳出来了,后面的代码执行不了
开始:
1、ResetAbort() 是一个静态方法,不能通过connThread实例调用,只能在线程内部使用
2、interrupt()
应该怎么通过按钮开启和停止一个线程?
join表示加入当前调用者线程,当前调用者线程会等待join进来的线程退出后才继续执行,所以join后面的代码执行不了。
那我用什么方法使这个线程(假设是connThread)能通过按钮控制开启和停止呢?
@Invictus: 你把 Thread 设置为一个成员变量 th,然后直接使用 th 上的方法来实现。
比如,如果我用abort()的话,怎么恢复这个线程,或者怎么把它彻底kill掉?
@Launcher: 我用的全局静态变量,因为我用的两个按钮是get请求到后台,如果用成员变量,每次get请求时变量都被重新赋值
@Invictus: 你能翻下MSDN么:http://msdn.microsoft.com/zh-cn/library/vstudio/ty8d3wta.aspx
另外,你的需求可能不是这样来实现的哦。你可以学习下线程的知识,然后再设计解决方案。
@Invictus: 在进程保持唯一实例的方法有很多,所以并不存在重新赋值的问题,另外,我还是那句话,请你理解了线程后,再考虑你的解决方案。因为解决方案不止一种,是根据你的需求来订的。
@Launcher: 我看了msdn的,用thread.Abort()释放线程;但thread.ResetAbort()不能这么用。thread还在,又不能new 一个线程,怎么办?就想问你Abort()以后怎么把它恢复;或者彻底kill掉,我建一个新线程。还望你指教
@Invictus: MSDN上不是写的很清楚吗?Abort成功后,线程就处于 Stopped,该状态下线程就不能再使用了。啥叫“彻底kill”?
thread调用Abort()后,这个线程就不能用了。这是硬伤。
你可以new 一个新的线程,再调用start()
或者Suspend()挂起,Resume()恢复