Abort后子线程不停止

Sanfhhhh 2019-04-02 09:35:49

我在Fun函数里启动一个线程A,然后在线程A中调用一个函数FunS,FunS中又启动Aa,Ab等若干个线程,,所有的线程ISBackground都是true。Abort线程A后,A中的Aa,Ab为什么不停止?
...全文
237 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
jx315425246 2019-04-04
  • 打赏
  • 举报
回复
Abort,是终止当前线程,并没有回收,(线程回收也是一个很大的麻烦,简单线程系统可以回收,线程一般都是循环作一件事,回收时先释放内存,再结束循环)线程A强行终止,线程a内线程并没有终止,实际线程A也没有终止,用Kill试一下
Sanfhhhh 2019-04-04
  • 打赏
  • 举报
回复
谢谢大家了,涨了知识
exception92 2019-04-03
  • 打赏
  • 举报
回复
使用Task对象可以很方便的创建,管理线程,以前的Thread几乎没有再使用过。
exception92 2019-04-03
  • 打赏
  • 举报
回复
Aa,Ab与A没有关系。不是在一个线程A中创建了一个线程Aa,Aa就是A的子线程,没有这种说法。
xian_wwq 2019-04-03
  • 打赏
  • 举报
回复
同意楼上,abort要慎用 比较合理的方式是放线程自行退出。 定义标志位volatile bool exitFlag = false; 工作线程在每次循环中,都检查这个变量,如果为true则退出标志。 需要结束线程, exitFlag = true; yourThread.Join(); // 等工作线程退出 显然,线程正常退出需要等待,不是立刻就能执行 有的工作不一定需要起用单个线程 借助线程池(或任务),能很好的解决问题
  • 打赏
  • 举报
回复
为什么要停止?根据是什么?
秋的红果实 2019-04-03
  • 打赏
  • 举报
回复
线程是脱缰的野马,开出去就不受A的控制了 你abort了A,Aa,Bb还在的 尽量少用abort,比如系统正在等待一个线程的结果,你此时将该线程abort了,系统就收不到一个有效的结果,可能整个崩溃 .NET对线程的包装还是不错的,可以用task,continuewith回调,或者async/await等待结果

110,502

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧