社区
C#
帖子详情
Abort后子线程不停止
Sanfhhhh
2019-04-02 09:35:49
我在Fun函数里启动一个线程A,然后在线程A中调用一个函数FunS,FunS中又启动Aa,Ab等若干个线程,,所有的线程ISBackground都是true。Abort线程A后,A中的Aa,Ab为什么不停止?
...全文
237
7
打赏
收藏
Abort后子线程不停止
我在Fun函数里启动一个线程A,然后在线程A中调用一个函数FunS,FunS中又启动Aa,Ab等若干个线程,,所有的线程ISBackground都是true。Abort线程A后,A中的Aa,Ab为什么不停止?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
打赏
举报
回复
为什么要停止?根据是什么?
秋的红果实
2019-04-03
打赏
举报
回复
线程是脱缰的野马,开出去就不受A的控制了 你abort了A,Aa,Bb还在的 尽量少用abort,比如系统正在等待一个线程的结果,你此时将该线程abort了,系统就收不到一个有效的结果,可能整个崩溃 .NET对线程的包装还是不错的,可以用task,continuewith回调,或者async/await等待结果
C# Thread.
Abort
方法真的让
线程
停止
了吗?
大家都知道在C#里面,我们可以使用Thread.Start方法来启动一个
线程
,当我们想
停止
执行的
线程
时可以使用Thread.
Abort
方法来强制
停止
正在执行的
线程
,但是请注意,你确定调用了Thread.
Abort
方法后
线程
就立刻
停止
了吗?答案是:不是! 下面我们来解释一下
Abort
方法是如何工作的。因为公用语言运行时管理了所有的托管的
线程
,同样它能在每个
线程
内抛出异常。
Abort
方法能...
为什么调用thread.
Abort
(),
线程
不会马上
停止
下面我们来解释一下
Abort
()方法是如何工作的。因为公用语言运行时管理了所有的托管的
线程
,同样它能在每个
线程
内抛出异常。
Abort
()方法能在目标
线程
中抛出一个Thread
Abort
Exception异常从而导致目标
线程
的终止。不过
Abort
()方法被调用后,目标
线程
可能并不是马上就终止了。因为只要目标
线程
正在调用非托管的代码而且还没有返回的话,该
线程
就不会立即终止。而如果目标
线程
在调用非托管的...
【多
线程
-
Abort
()方法强制退出
线程
】
线程
的退出比较特殊,使用的是
Abort
()方法进行强制退出,会抛出一个
线程
异常来结束该
线程
的执行任务。 class Program { private static Thread subthread ; private static string name =""; static void Main(string[] args)
C# Thread
线程
的
停止
和恢复
/* 因为公用语言运行时管理了所有的托管的
线程
,同样它能在每个
线程
内抛出异常。
Abort
方法能在目标
线程
中抛出一个Thread
Abort
Exception异常从而导致目标
线程
的终止。不过
Abort
方法被调用后,目标
线程
可能并不是马上就终止了。因为只要目标
线程
正在调用非托管的代码而且还没有返回的话,该
线程
就不会立即终止。而如果目标
线程
在调用非托管的代码而且陷入了一个死循环的话,该目标
线程
就根本不会终止。不过这种情况只是一些特例,更多的情况是目标
线程
在调用托管的代码,一旦
Abort
被调用那么该
线程
就立即终止..
父
线程
在创建了子
线程
后,是不是继续执行自己的代码 ?(收集整理)
1.父
线程
必须在子
线程
结束后结束 因为子
线程
是属于父
线程
的父
线程
要是结束了它的所有子
线程
也就随之消亡! 2..如果父
线程
先于子
线程
结束,那么子
线程
将在父
线程
结束的同时被迫结束。Thread.Join()方法使父
线程
等待,直到子
线程
结束。
Abort
()方法带来的后果是不可恢复的终止
线程
。 3.起始
线程
可以称之为主
线程
,如果所有的前台
线程
都
停止
了,那么主
线程
可以终止,而所有的后台
线程
都将无条...
C#
110,502
社区成员
642,567
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章