社区
C#
帖子详情
如何安全的杀死一个线程
superbug1984
2006-04-07 10:53:39
我在主线程里响应界面
new了一个新线程用来处理一大堆很耗cpu的操作,这些操作完成之后,怎样快速恢复cpu资源?
因为经过n次测试都发现,在子线程里操作完成之后,cpu仍然占100%
我用thread.Abort();但是这样会导致抛出一个异常,而且也根本不能正常返回
或者我在操作完成后,直接不处理,cpu资源也依然占用:(
请问大家都有什么好办法???
...全文
324
15
打赏
收藏
如何安全的杀死一个线程
我在主线程里响应界面 new了一个新线程用来处理一大堆很耗cpu的操作,这些操作完成之后,怎样快速恢复cpu资源? 因为经过n次测试都发现,在子线程里操作完成之后,cpu仍然占100% 我用thread.Abort();但是这样会导致抛出一个异常,而且也根本不能正常返回 或者我在操作完成后,直接不处理,cpu资源也依然占用:( 请问大家都有什么好办法???
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
gnhao
2006-04-07
打赏
举报
回复
这种情况我也碰到过,
gnhao
2006-04-07
打赏
举报
回复
可能的话把线程源码贴上来吧,
gnhao
2006-04-07
打赏
举报
回复
这不好说,安全的关闭一个线程序方法就那几种,那要看你在线程里做了什么才行,比如线程里还有什么资源没完全释放之类的不管用什么方法都会异常....
charles_y
2006-04-07
打赏
举报
回复
要想安全,就要从线程本身出发。
给线程一个条件,让它跳出处理程序,自然结束
superbug1984
2006-04-07
打赏
举报
回复
看了各位的提议,无非都是Join()之类的,我用过,不行!
OrangeSeaCoast(橙色海岸)的说法不行
方法我暂时没测试,但是我根本就不想要界面都退出了,而是只想子线程里处理操作都完毕之后,cpu资源占用能迅速降下来
bearocean
2006-04-07
打赏
举报
回复
private Thread thSun;
private void ThreadProc()
{
//Dosome thing
//I didnt care wheather the thread go end, I just want to kill her
//raise an event
killMe();
}
//Join sub thread
this.thdSub.Join
viena
2006-04-07
打赏
举报
回复
根本的办法还是调整线程执行的代码
Knight94
2006-04-07
打赏
举报
回复
private bool blnStopped;
private Thread thdSub;
private void ThreadFun()
{
while( !blnStopped )
{
//do some here in sub thread
}
}
-----Start sub thread-------
blnStopped = false;
thdSub = new Thread(new ThreadStart(ThreadFun));
thdSub.Start();
--Close thread
blnStopped = true;
thdSub.Join();
mobydick
2006-04-07
打赏
举报
回复
你用
Thread thread = new Thread(new ThreadStart(ThreadMethod));
thread.Start();
private void ThreadMethod()
{
for(int i = 0; i < 100000; ++i)
{
Thread.Sleep(1);
}
}
等循环执行完毕,你new出来的线程自动就终止了。
OrangeSeaCoast
2006-04-07
打赏
举报
回复
Dim abc As System.Diagnostics.Process()
abc = System.Diagnostics.Process.GetProcesses()
循环找到该进程, Kill就可以了
abc(该进程).Kill()
GXY2005
2006-04-07
打赏
举报
回复
根本的办法还是调整线程执行的代码
Muf
2006-04-07
打赏
举报
回复
Abort是会在线程中引起异常。
线程中要捕获这个异常。这个异常通常是用来通知线程,有人要关闭你这个线程了。所以,在异常处理中,应该释放线程所获得的各种资源。这才是比较安全的。
superbug1984
2006-04-07
打赏
举报
回复
自己小顶一下,up
superbug1984
2006-04-07
打赏
举报
回复
线程源码无非也就是先在主线程里做一些准备工作
到了差不多的时候new 一个子线程出来,对串口发数据
现在所有的数据都已经发完毕了,而这个子线程的发送方法却总是不能返回
从log4net纪录的日志内容来看,最后捕捉的异常也就是因为我调用 thread.Abort 抛出的
superbug1984
2006-04-07
打赏
举报
回复
我在子线程里有访问串口的操作
现在我已经把所有数据都已经写完毕了,这里面会涉及到无法回收的资源吗?
JAVA多
线程
精讲下
线程
的同步(
线程
安全
问题)l
线程
的死锁l
线程
间通信l
线程
组l
线程
池l 多
线程
的第三种实现方案l 匿名内部类方式使用多
线程
l 定时器的使用l 多
线程
面试题
java 如何杀
线程
_关于java:我怎么能
杀死
一个
线程
?
你能检查一下上面的代码并帮我把
线程
终止吗 请参阅本文forward.com.au/javaprogramming/howtostopathread.html 看看
杀死
javame 1.2
线程
的最佳实践?也许有帮助。 呃…这甚至是可编译的代码吗? 根据定义,Thread....
python杀
线程
_Python |
杀死
线程
都有哪些方法?
最近业余爱好是吃了好几个月灰的树莓派,开始补全各种driver,也算是对Python的学习。写driver的过程中,第一次遇到多
线程
的情况。...4. 使用多进程模块
杀死
线程
,5.用设置为后台的方式
杀死
线程
仅仅是...
python中优雅的
杀死
线程
有一种更优雅的
杀死
线程
的方法就是使用退出标记,这里使用threading.Event()创建
一个
事件管理标记flag,这种方法是更
安全
的。 # encoding:utf-8 import time import threading class StoppableThread(threading...
“
杀死
”Java
线程
的一些方法
这些天在琢磨
线程
的问题,发现在java中要实现“
杀死
”
线程
的问题
C#
110,535
社区成员
642,575
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章