社区
C#
帖子详情
主线程强制关闭,子线程用不用管了
l8487
2009-08-24 04:26:35
winform
1,程序关闭的时候。主线程abort()..子线程会不会因为主线程的死亡也自动死亡?
2、如果要通知子线程子线程关闭。如何通知?用简单的方法。比如判断一个static类型的bool字段。
...全文
619
12
打赏
收藏
主线程强制关闭,子线程用不用管了
winform 1,程序关闭的时候。主线程abort()..子线程会不会因为主线程的死亡也自动死亡? 2、如果要通知子线程子线程关闭。如何通知?用简单的方法。比如判断一个static类型的bool字段。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jinlong1990
2012-04-30
打赏
举报
回复
进程结束,所有线程结束!!
jinlong1990
2012-04-30
打赏
举报
回复
当主线程结束时,代表进程结束!所以主线程结束时,所有进程度会结束!
主线程就是man 函数 !
l8487
2009-08-24
打赏
举报
回复
[Quote=引用 7 楼 redleafe 的回复:]
不会。
你最好在A退出前,自己检查B是否已退出,否则强行终止。
以此类推。
[/Quote]
兄弟,如果线程依然没有结束,那么数据库应该是处于使用状态的,我做一个小程序,该程序使用access数据库。我观察到程序退出2秒后,该access数据库就没有任何程序使用了。
mythad
2009-08-24
打赏
举报
回复
子线程的IsBackGroud = true;然后就别管了
zhaoweiting0609
2009-08-24
打赏
举报
回复
mark
redleafe
2009-08-24
打赏
举报
回复
不会。
你最好在A退出前,自己检查B是否已退出,否则强行终止。
以此类推。
l8487
2009-08-24
打赏
举报
回复
楼上 各位兄弟。
我开启了一个线程A。在线程A中创建了线程B,线程B创建了线程C。
我在主窗口的关闭的时候执行A.Abort();以后,过了2秒,程序退出了。因为线程B负责取某网页的body部分的内容。线程C负责数据库操作。。
是不是父线程结束后,子线程也会自动结束?
soaringbird
2009-08-24
打赏
举报
回复
1.不会。如果把子线程IsBackGroung设为true,就会自动死亡了。
2.可以把子线程的线程循环的判断标志用变量来做,但是并不会完全管用。如果线程的工作需要等待某些设备的返回,而不是在线程循环转圈,就不管用了。
SK_Aqi
2009-08-24
打赏
举报
回复
学习了.
jy251
2009-08-24
打赏
举报
回复
1.不会,主线程退了,但是其他的线程没有被关闭的话,那么进程是不能被结束的。
2.如果你的线程是用的while循环,那么你可以使用全局的bool变量,判断这个值,如果退出那么你其他线程的while就退出。你说的是对的。
pcqpzq
2009-08-24
打赏
举报
回复
另外,也可以强制结束进程
pcqpzq
2009-08-24
打赏
举报
回复
1。必须人为关闭子线程,否则程序不会真正结束,子线程一直会运行直到其结束
2.1。可以设置一个公共变量(不一定要static的,但必须主线程和子线程都能访问),当主线程结束时设置为true,子线程在循环体中检测变量,检测到true是结束
2.2。把主线程中的子线程做成变量、或是变量数组、变量集合、队列都行,主线程结束前先将所有子线程Abort()
Android Handler
主
线程
和一般
线程
通信的应用分析
Handler的定义:
主
要接受
子
线程
发送的数据, 并用此数据配合
主
线程
更新UI.解释: 当应用程序启动时,Android首先会开启一个
主
线程
(也就是UI
线程
) ,
主
线程
为管理界面中的UI控件,进行事件分发, 比如说, 你要是点击一个 Button ,Android会分发事件到Button上,来响应你的操作。如果此时需要一个耗时的操作,例如: 联网读取数据,或者读取本地较大的一个文件的时候,你不能把这些操作放在
主
线程
中,如果你放在
主
线程
中的话,界面会出现假死现象, 如果5秒钟还没有完成的话,会收到Android系统的一个错误提示”
强制
关闭
”。这个时候我们需要把这些耗时的操作,放在一个
子
线程
中
Android中利用Handler在
子
线程
中更新界面--简单的小球上下跳动案例
当我们在处理下载或是其他需要长时间执行的任务时,如果直接把处理函数放Activity的OnCreate或是OnStart中,会导致执行过程中整个Activity无响应,如果时间过长,程序还会挂掉。Handler就是把这些功能放到一个单独的
线程
里执行,与Activity互不影响。当用户点击一个按钮时如果执行的是一个常耗时操作的话,处理不好会导致系统假死,用户体验很差,而Android则更进一步,如果任意一个Acitivity没有响应5秒钟以上就会被
强制
关闭
,因此我们需要另外起动一个
线程
来处理长耗时操作,而
主
线程
则不受其影响,在耗时操作完结发送消息给
主
线程
,
主
线程
再做相应处理。那么
线程
之间的消息传递和异步处理用的就是Handler。 以下模拟一个简单的小球上下跳动的案例来分析Handler的工作模式。 详细博客链接:http://blog.csdn.net/a13429921973/article/details/9279941
Handler的使用
Handler用来接收
子
线程
发送的消息,并根据此数据来更新
主
程序中的UI;当
主
线程
中的操作比较耗时,就需要把耗时的操作放到
子
线程
中。在Android中,如果
主
线程
在5s内没有响应的话,就会弹“
强制
关闭
”的提示框;
易语言写脚本教程小白也能
第一节 教学目标阐述、基础概念讲解 1、本套课程的教学目标 2、教程中涉及的实例 ● 多
线程
查询电信手机号码余额 ● 多
线程
QQ号码查询微博账号 ● 多论坛、多帐号、多任务顶帖 ● 多
线程
进度下载及断点续传 ● 多
线程
登录QQ查询DNF是否被限制 3、什么是多
线程
4、堆内存、栈内存 5、同一进程的
线程
共享的资源和独有的资源 第二节 多
线程
支持库命令1 1、启动
线程
2、等待
线程
3、
强制
关闭
线程
4、
关闭
线程
句柄 第三节 多
线程
支持库命令2 1、创建进入许可证 2、删除进入许可证 3、进入许可区 4、退出许可区 第四节 从设计一个简单的多
线程
程序开始 电信话费查询 1、电信查询类的封装 2、程序思路梳理 3、查询单条信息实现 4、多
线程
实现 第五节
线程
的控制 1、
主
线程
与
子
线程
2、
线程
的暂停、结束
线程
_挂起
线程
_恢复 3、
线程
数量控制 4、尽量不要
强制
结束
线程
第六节 多
线程
QQ查询微博账号 (巩固简单多
线程
的编写) 1、过程梳理 2、多
线程
实现 3、流程控制 4、
线程
运行中统计数量 第七节 共享资源和私有资源
易语言-易语言真正的
线程
池简易实现
易语言简易
线程
池的实现 ——V雪落有声V原创 转载请保留 前文: 为了能充分理解本篇文章的内容,需要了解的知识如下: 1.事件对象的使用:http://baike.baidu.com/view/751499.htm 2.信号量的使用:http://baike.baidu.com/view/1285861.htm 3.等待单一对象,等待多个对象的使用:http://baike.baidu.com/view/1424795.htm,http://baike.baidu.com/view/908866.htm 4.链表,队列——易语言数据结构支持库的使用:见易语言帮助文档 5.多
线程
间的许可证的使用:见易语言帮助文档 6.原
子
锁操作:http://baike.baidu.com/view/6235756.htm 一.了解
线程
池的运行原理:
线程
池是一种多
线程
处理形式,处理过程中将任务添加到队列,然后在创建
线程
后自动启动这些任务。
线程
池
线程
都是后台
线程
。每个
线程
都使用默认的堆栈大小,以默认的优先级运行,并处于多
线程
单元中。超过最大值的
线程
可以排队,但他们要等到其他
线程
完成后才启动。 具体参见:http://baike.baidu.com/view/262150.htm 二.实现的过程概述: 1.通过一个
主
线程
来监视是否有新任务,如果有新任务,则判断当前的
线程
数是否大于最大
线程
数,如果小于最大
线程
数则创建新
线程
,反之则加入
线程
队列等待执行。 2.当时间经过过长(1分钟,可手动设置)
主
线程
会自动
关闭
一部分的
线程
,保留最小
线程
数,来释放资源。 3.执行任务的
线程
等待队列,如果队列中有任务,则执行任务,如果队列中没有任务,则进入内核等待状态,当队列中有任务时继续执行。而不是重复性创建和销毁
线程
。 具体请看上图。 三.
线程
句柄的管理 每次新建
线程
时,将自动将内部的_ID增加1,保存到“类_
线程
句柄数组管理”中,该类以链表存储的方式,保存所有的
线程
句柄和ID。当销毁
线程
池或
关闭
子
线程
时时,
关闭
所有或对应的句柄。 四.任务队列的实现 任务队列采用易语言中的“数据结构支持库”中的“队列”,队列为:先进先出,这样保证是按照先后顺序来进行的,而且弹出后会自动在队列中删除,使用方便。在有新任务时,由
主
线程
将任务信息压入队列,并且设置“内部_
线程
池数据.__监视任务队列信号量”的计数值+1,
子
线程
通过监听这个事件,从队列中弹出获取一个信息,然后进行执行。 五.销毁的实现 当执行销毁
线程
池的命令时,设置“__
线程
池退出事件信号量”为有信号,使
主
线程
退出循环并执行清理代码,设置“__
子
线程
结束信号量”计数值为最大(虽然
不用
这么大),保证每个
线程
都退出。而后
主
线程
监视所有的
子
线程
退出,如果超过“超时时间”则
强制
销毁所有
子
线程
,并且释放其他资源,返回。 监视方法:
主
线程
监视:“
子
线程
退出完毕事件”事件,
子
线程
每次退出都会递减:“内部_
线程
池数据.__运行
子
线程
数”的值,如果“内部_
线程
池数据.__运行
子
线程
数”=0,则会设置“
子
线程
退出完毕事件”为有信号,表示所有
子
线程
都退出了,然后执行清理工作。
C#
110,535
社区成员
642,577
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章