首页 新闻 搜索 专区 学院

请问:如何像 终止 thread 一样终止 task呢

0
悬赏园豆:5 [已解决问题] 解决于 2022-06-15 14:23

作为 初学者,一直使用thread,当线程进入thread.sleep时,如果发生紧急状况,经常使用abort,join指令直接将thread杀死,现在开始学习task,发现在task中使用 CancellationTokenSource 对象,使用while不停检测 iscancelationrequested状态,从而取消线程
我的应用场景是简单的工业控制,线程的创建已封装,调用时直接指定方法,方法体有的是while循环,直到软件推出才消亡,while不停执行switch语句,通过switch顺序执行逻辑动作;有的是无循环的顺序执行,自己执行完一遍就消亡了,考虑到如果要时刻检测iscancelationrequested状态,就需要在我封装的方法内部,为每一个task都内置一个cancellation对象,并将task对应的方法放入到while循环中,但是这样的话,有些方法是顺序执行一遍就消亡 的,为了检测iscancelationrequested状态嵌入到while循环中又不合适,无法达到马上杀死线程的效果,
作为初学者,说了这么多,不知道表述的想法大神们能否给出思路,整体就是希望在task上,能立马终止线程,
如果有相关的好的文章,也请大神们指点,谢谢

rossi1984的主页 rossi1984 | 初学一级 | 园豆:16
提问于:2022-05-18 22:48
< >
分享
最佳答案
1

有些方法是顺序执行一遍就消亡

如果已经执行完了,就不存在取消 task 的问题

收获园豆:5
dudu | 高人七级 |园豆:36444 | 2022-05-18 22:54

下面的代码就是取消 task

var ts = new CancellationTokenSource();
ts.Cancel();
dudu | 园豆:36444 (高人七级) | 2022-05-18 23:00
dudu | 园豆:36444 (高人七级) | 2022-05-18 23:09

@dudu: 大神,如果我新建一个thread,直接abort和join配合杀死指定的执行线程,指定的执行线程会直接消亡,但是使用CancellationTokenSource,终究是while循环判断其状态,while的循环周期,也制约停止的时序,希望在task中实现kill thread的方式,请大神再指点指点

rossi1984 | 园豆:16 (初学一级) | 2022-06-11 13:24
dudu | 园豆:36444 (高人七级) | 2022-06-11 17:33
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册