首页 新闻 赞助 找找看

多线程中线程的释放和重启

0
悬赏园豆:10 [已解决问题] 解决于 2012-12-18 09:58

两个按钮,一个开启线程,一个停止线程

下面1是第一组方法,2是第二组方法

停止:

1、Abort() 方法可以终止线程,但该Thread类的实例(假设是connThread)却并不为null

2、join() 方法,不知道为什么,调试时到了这条代码就跳出来了,后面的代码执行不了

开始:

1、ResetAbort() 是一个静态方法,不能通过connThread实例调用,只能在线程内部使用

2、interrupt() 

 

应该怎么通过按钮开启和停止一个线程?

Invictus的主页 Invictus | 初学一级 | 园豆:76
提问于:2012-12-17 17:43
< >
分享
最佳答案
0

join表示加入当前调用者线程,当前调用者线程会等待join进来的线程退出后才继续执行,所以join后面的代码执行不了。

收获园豆:8
Launcher | 高人七级 |园豆:45045 | 2012-12-17 17:47

那我用什么方法使这个线程(假设是connThread)能通过按钮控制开启和停止呢?

Invictus | 园豆:76 (初学一级) | 2012-12-17 17:51

@Invictus: 你把 Thread 设置为一个成员变量 th,然后直接使用 th 上的方法来实现。

Launcher | 园豆:45045 (高人七级) | 2012-12-17 17:54

比如,如果我用abort()的话,怎么恢复这个线程,或者怎么把它彻底kill掉?

Invictus | 园豆:76 (初学一级) | 2012-12-17 17:54

@Launcher: 我用的全局静态变量,因为我用的两个按钮是get请求到后台,如果用成员变量,每次get请求时变量都被重新赋值

Invictus | 园豆:76 (初学一级) | 2012-12-17 17:57

@Invictus: 你能翻下MSDN么:http://msdn.microsoft.com/zh-cn/library/vstudio/ty8d3wta.aspx

另外,你的需求可能不是这样来实现的哦。你可以学习下线程的知识,然后再设计解决方案。

Launcher | 园豆:45045 (高人七级) | 2012-12-17 17:58

@Invictus: 在进程保持唯一实例的方法有很多,所以并不存在重新赋值的问题,另外,我还是那句话,请你理解了线程后,再考虑你的解决方案。因为解决方案不止一种,是根据你的需求来订的。

Launcher | 园豆:45045 (高人七级) | 2012-12-17 17:59

@Launcher: 我看了msdn的,用thread.Abort()释放线程;但thread.ResetAbort()不能这么用。thread还在,又不能new 一个线程,怎么办?就想问你Abort()以后怎么把它恢复;或者彻底kill掉,我建一个新线程。还望你指教

Invictus | 园豆:76 (初学一级) | 2012-12-17 18:04

@Invictus: MSDN上不是写的很清楚吗?Abort成功后,线程就处于 Stopped,该状态下线程就不能再使用了。啥叫“彻底kill”?

Launcher | 园豆:45045 (高人七级) | 2012-12-18 09:20
其他回答(1)
0

thread调用Abort()后,这个线程就不能用了。这是硬伤。

 

你可以new 一个新的线程,再调用start()

 

或者Suspend()挂起,Resume()恢复

收获园豆:2
angelshelter | 园豆:9887 (大侠五级) | 2012-12-17 20:58
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册