VC/MFC
VB
Delphi
C++ Builder
C/C++
Java
.NET技术
MS-SQL Server
PowerBuilder
DB2
Oracle
Web 开发
Linux/Unix社区
硬件/嵌入开发
移动平台
您的位置:
程序门
->
delphi
-> vcl组件开发及应用
多线程停止的问题
[
收藏此页
] [
打印本页
]选择字色:
默认
灰色
红色
黄色
绿色
橙色
紫色
蓝色
褐色
墨绿
深蓝
赭石
粉绿
淡绿
黄灰
翠绿
综红
砖红
淡蓝
暗红
玫瑰红
紫红
桔黄
军黄
烟灰
深灰
灰蓝
背景色:
默认
黑色
红色
黄色
绿色
橙色
紫色
蓝色
褐色
墨绿
深蓝
赭石
粉绿
淡绿
黄灰
翠绿
综红
砖红
淡蓝
暗红
玫瑰红
紫红
桔黄
军黄
烟灰
深灰
灰蓝
字体:[
大
][
中
][
小
]
多线程停止的问题
发表于:
2007-08-23 17:37:10
楼主
我在程序里面 启动一个线程, 这个线程是对一个表由头到尾地处理数据。 但是我想停止这个线程,好像停止不了的?反而暂停和继续就行。请问是什么问题? 谢谢!
发表于:
2007-08-23 17:40:03
1
楼 得分:
0
线程.terminat;
发表于:
2007-08-23 17:45:43
2
楼 得分:
0
楼上的兄弟 ,我也是用这个的 ,但是停止不了。
发表于:
2007-08-23 20:34:50
3
楼 得分:
0
线程的EXECute方法中加 terminated 判断,terminated = true 就跳出
发表于:
2007-08-23 22:18:29
4
楼 得分:
0
楼上的兄弟 可以告知具体的方法吗? 谢谢
发表于:
2007-08-24 09:12:44
5
楼 得分:
0
terminate只是把线程的terminated属性设置为true而已,如果你的EXECute里的某个方法正在执行的话,线程是不会停止的(直到你的方法执行完,线程判断到terminated属性位置)。
作为要随时停止的线程,一个好的习惯是把大的操作分小,这样才可以方便随时判断到terminated属性是否为true。
如果操作实在不可细分,还有一种歪门点的办法就是,利用异常来停止当前执行的方法,然后捕捉异常后退出线程。
最终方法是用api的terminatethread,不过一般不建议使用,所有后果自己负责(如资源释放等)
发表于:
2007-08-26 09:49:57
6
楼 得分:
0
楼上兄弟,我已经按照你的方法
但是,mythread.terminate 后, 线程还保存在内存里面的?
我需要把他 mythread.free 和 mythread.destroy 吗?我执行了以上操作了,但是关闭窗体报错。
不知道是否由于线程没有处理好。
还有,我用了线程,执行完线程的操作后 会报: error creating window device context ,这个错不是每次都报,请问由是什么原因?
发表于:
2007-08-26 14:02:45
7
楼 得分:
0
在我的项目里面我是把整个线程类给释放掉了就没有那问题,好像是 .free 还是 :=nil 记不太清楚了
发表于:
2007-08-26 22:09:48
8
楼 得分:
0
但是,mythread.terminate 后, 线程还保存在内存里面的?
我需要把他 mythread.free 和 mythread.destroy 吗?
----------------------------------------------------------
对,线程还没释放,你需要在外面把它释放掉;或者把其freeonterminate属性设置成true也可以。
发表于:
2007-08-27 09:04:31
9
楼 得分:
0
楼上的兄弟?
不都是楼主(kciv )一个人吗?
发表于:
2007-08-27 09:12:47
10
楼 得分:
0
晕 ,csdn怎么搞的,开始显示的全是楼主的帖!! :(
发表于:
2007-08-29 09:21:42
11
楼 得分:
0
但是,mythread.terminate 后, 线程还保存在内存里面的?
我需要把他 mythread.free 和 mythread.destroy 吗?
----------------------------------------------------------
对,线程还没释放,你需要在外面把它释放掉;或者其freeonterminate属性设置成true也可以。
问题是,有些情况是不能等到线程完成我就想把它关闭啊,如果其freeonterminate属性设置成true,是要等到线程结束才释放的吧?
发表于:
2007-08-29 09:31:10
12
楼 得分:
0
对了 ,如果没有等线程完成,就关闭窗体,报这个错:
project project2.exe raised exception class estackoverflow with message 'stack overflow'.process stopped.use step or run to continue .
发表于:
2007-08-29 09:33:39
13
楼 得分:
0
问题是,有些情况是不能等到线程完成我就想把它关闭啊,如果其freeonterminate属性设置成true,是要等到线程结束才释放的吧?
------------------------------------------
你把它terminate了,不就结束了?然后freeonterminate就有用了。当然你想随时停的话,EXECute里的循环必须要能做到随时检查terminated标记才行,或者使用其它方法以让程序能检测到此标记。
发表于:
2007-08-29 09:37:15
14
楼 得分:
0
如果没有等线程完成,就关闭窗体,报这个错
----------------
所以我现在比较习惯在窗体上进行线程释放,free之前先来个waitfor,保证窗体等待线程释放完后再释放。
不过overflow错误估计是由你的线程内部引起的(我不知道具体实现),一般出现循环调用,导致内存急剧增加,就有可能stack overflow
发表于:
2007-08-31 17:20:21
15
楼 得分:
0
上面的问题还没有解决。
又有一个新问题了。
调用线程,运行了一下,报错:
project projec2.exe raised exception class eaccessviolation with message 'access violation at address 004e0f64 in module'project2.exe'.read of address 00000028'. process stopped.use step or run to continue.
在我的笔记本没有这个问题,我的笔记本是单核cpu 。在台式机是双核的,不知道跟这个有关系吗?我试了双cpu的也报这样的错。
发表于:
2007-09-03 09:43:13
16
楼 得分:
0
自己顶上去!
发表于:
2007-09-04 11:16:55
17
楼 得分:
0
再顶上去!
发表于:
2007-09-05 16:02:43
18
楼 得分:
0
前几天,我用socket编写多文件传输的时候,处理过类似的问题,
我在clientEXECute{相当于tthread的EXECute}里面终止线程。。。
参考代码:
while (not terminated) and clientsocket.connected do
begin
......
if readtext = key_clt[4] then
terminate;
end;
下一篇:
tgraphiccontrol派生类刚开始可以显示,一段时间后显示不出来。
上一篇:
delphi2006copyfile调用后不能删除原文件,急!!
相关文章
delphi开发的web service中数据持久化的问题...
drawtext函数使用dt_calcrect参数后返回的rect代...
用tquery查询带memo字段的数据表事,为什么显示的...
看看这网站有点特色吧?
高手帮忙!关于验证用户登录的问题!为什么子窗体...
devexpress组件包下的tdxsidebar问题 【100...
maskedit判断日期正确格式
急!!!!一个简单的问题!谢谢!(新手)
杀进程的错误,可怕啊。都看看啊,请帮我解决一下...
同志们,现在谁在用delphi阿!有个问题讨论一下!
隐藏dos窗口
关于小票打印
c++头文件转换问题
公司正式开张了
组合的问题,请大家看下
这个程序为什么实现功能呢?
长假了,散分~~
请教如何打开lan中某台电脑
这里有一段代码我看也看不懂.请帮助
数据库连接的问题??
其他资讯
大家帮我看看这段测试代码,为什么老获取不到这个...
delphi写类似于dos命令!
请教大侠,如何在判断在程序运行时鼠标点击的某个...
memo1的數據有沒有辦法導出到excel或導出到dbgri...
在dephi中怎样判断本机是否安装了打印驱动?
idtcpserver做服务器多线程问题
一个关于远程访问access数据库的问题,在线等,很急...
如何将多个cxgrid连接在一起“打印”出来?
cxgrid数据集无法同步更新?
png文件读取问题
关于 doublebuffered
今年最后一帖 大散10分
关于 microsoft help workshop的...
求助,日期怎么转换的?
好久没来了,看看.....
多个客户端向服务器端同时发送信息时,服务器端有...
有关delphi与c语言socket互相通讯问题
字体颜色
如何给分啊
请问怎样在用openpicturedialog 打开的图片...
快速检索
分类导航标签a
硬件/嵌入开发VxWorks开发
.NET技术J#
扩充话题活动聚会
DB2数据管理
微软创新杯软件开发大赛渲染技术竞赛
《开发高手》杂志文章评论
扩充话题程序人生
DB2内容管理
《程序员》杂志广告咨询
移动平台近距离无线技术
产品/厂家山西.NET俱乐部社区
DB2数据库开发
Windows专区网络管理配置和工具使用
JavaIDEA
.NET技术ASP.NET
最新资讯
如何将listbox 里面的列举选项全部清空?
密码登录程序
请问几个网络配置问题:
怎么样才可以做到这样的效果(内详)asp
convert datetime的问题
帮忙啊.一个问题.在线等!!!!100分
asp.net配置工具“遇到错误。请返回上一页并重试...
插件连接不上
不能在 dropdownlist 中选择多个项,&n...
我来测测
问一个关于delphi的布尔值问题!
如何取出当前服务器的ip地址
vbs如何获得窗口句柄
求.net enterprise library 3.1的...
求教一个很菜的sql数据更新语句
怎样在gridview的编辑模式中验证数据?谢谢!
应聘j2me初试难还是复试难?
amt都支持那些平台的开发呢?
问一个关于定时器的问题
问个dephi开发方面的问题
怎么和现有的web邮件服务器交互?
pb里代码如何保存在数据库中的某些值为下划线?
推荐一个极好的web报表控件atgrid,能在线看到效...
多字段查询问题请教:
急!!!!!!!!!!!!!!!!!!!!!!...
到底什么叫脚本语言?和c,java,vb有什么不同?
紧急求助!!
java格式化字符串
关于“最近开大的文件”的问题
关于jsp下用dom读写数据的问题
提问一个很菜鸟的调用其他类的函数问题
求计算机本科毕业论文,课题不限
请教一个数据库问题
求问:在access数据库导入excel过程中有错 ...
frreport打印 ?
************** hashtab...
请教:如何设计一个博客系统的数据库?
关于moto e680的挂起问题
.net框架前景如何?
一个发邮件的程序 总出错!为什么啊
热门点击
cpu的api函数问题
c#静态数组
“去除不干胶”续 暨继续散分8! 成功...
海辉国际诚邀赴微软工程师
如何用javascript检测cpu和内存信息?
visual studio 2005, xp,a...
运行结果居然为0,不知道错在哪了?
如何遍历系统中正在运行的所有程序的窗口句柄
为什么加空字符?
如何设置asp.net当中的datagrid边框成虚线
读取.dat文件内容并将其转换的问题
getting started with openmp-i...
jsp在myeclipse的调试问题
编码速度太快怎么办
中hack.suspiciousani毒!急求救~~~~
本人初学php,请前辈告诉我如何配置php运行环境.....
求助: 用live mail收邮件出错
jsp 判断文件类型
一个初级女程序员的烦恼
这个是怎么实现的?跨浏览器读取
声音严重失真
一个有关网页布局挺奇怪的问题
请问:关于session,我有一件事情不太理解,求助...
如何获取text的值,并进行 十六进制编码,函数...
(rowlock holdlock) 和 with(r...
工作原因,转让上海文华学院的3g手机软件开发就业...
!!!!!有关vb连接access数据库的??????...
问个索引效率问题
程序怎么自动运行阿?急!!!
新手提问:关于treeview的问题
几层if then 语句访问xml节点的问题,大...
在天津有想学c++\数据库\mis系统建模的吗?
请高手详细介绍一下键盘io口扩展ic:74164
为什么结果不为true?
判断文本框是否输入值,要判断哪些
我能否在程序员队伍中求一立脚之地?
可以随意拖动的edit控件, 如何通过鼠标消息...
oracle索引表 binary_integer和ls_integer&...
寻找熟悉linux 下用shell命令写cgi程序的高...
paoluo(一天到晚游泳的鱼), 刚才不好意思,...