使用Delphi XE TThread时的一些问题
时间:2011-08-08
来源:互联网
使用Delphi XE封装的TThread类写多线程程序
在Button1的click事件中写入
Delphi(Pascal) code
当线程执行完后就释放了,如果我在按button1,为何不会重新执行线程了呢?
button2为挂起线程代码,workthread.suspend;
执行完线程后,按暂停会是TThread Error(句柄无效6);怎么才能良好去容错呢?
还有激活线程代码 workthread.resume; 也和挂起线程的结果一样,如何解决?
在编译的时候会提示
[DCC Warning] Unit1.pas(61): W1000 Symbol 'Resume' is deprecated
[DCC Warning] Unit1.pas(78): W1000 Symbol 'Suspend' is deprecated
不知道如何才能正却的去使用suspend和resume;这个提示在D7中是没有的!
请高手给详细讲解一下,谢谢了!恭喜各位发大财...嘿!
在Button1的click事件中写入
Delphi(Pascal) code
procedure TForm1.Button1Click(Sender: TObject); begin workthread:=TCJThread.Create(True); workthread.FreeOnTerminate :=True; workthread.Start; end;
当线程执行完后就释放了,如果我在按button1,为何不会重新执行线程了呢?
button2为挂起线程代码,workthread.suspend;
执行完线程后,按暂停会是TThread Error(句柄无效6);怎么才能良好去容错呢?
还有激活线程代码 workthread.resume; 也和挂起线程的结果一样,如何解决?
在编译的时候会提示
[DCC Warning] Unit1.pas(61): W1000 Symbol 'Resume' is deprecated
[DCC Warning] Unit1.pas(78): W1000 Symbol 'Suspend' is deprecated
不知道如何才能正却的去使用suspend和resume;这个提示在D7中是没有的!
请高手给详细讲解一下,谢谢了!恭喜各位发大财...嘿!
作者: WinSockCF 发布时间: 2011-08-08
这两方法建议使用
作者: Im17benteng 发布时间: 2011-08-08
不建议使用吧
为什么 Thread.suspend 和 Thread.resume 被废弃了?
Thread.suspend 天生容易引起死锁。如果目标线程挂起时在保护系统关键资源的监视器上持有锁,那么其他线程在目标线程恢复之前都无法访问这个资源。如果要恢复目标线程的线程在调用 resume 之前试图锁定这个监视器,死锁就发生了。这种死锁一般自身表现为“冻结( frozen )”进程。
详细请看下面
http://www.cnblogs.com/phoebus0501/archive/2011/02/22/1961639.html
为什么 Thread.suspend 和 Thread.resume 被废弃了?
Thread.suspend 天生容易引起死锁。如果目标线程挂起时在保护系统关键资源的监视器上持有锁,那么其他线程在目标线程恢复之前都无法访问这个资源。如果要恢复目标线程的线程在调用 resume 之前试图锁定这个监视器,死锁就发生了。这种死锁一般自身表现为“冻结( frozen )”进程。
详细请看下面
http://www.cnblogs.com/phoebus0501/archive/2011/02/22/1961639.html
作者: onlyou13 发布时间: 2011-08-08
引用 2 楼 onlyou13 的回复:
不建议使用吧
为什么 Thread.suspend 和 Thread.resume 被废弃了?
Thread.suspend 天生容易引起死锁。如果目标线程挂起时在保护系统关键资源的监视器上持有锁,那么其他线程在目标线程恢复之前都无法访问这个资源。如果要恢复目标线程的线程在调用 resume 之前试图锁定这个监视器,死锁就发生了。这种死锁一般自身表现为“冻结( frozen )”进程……
这个虽然不是delphi的,但是也差不多 不建议使用吧
为什么 Thread.suspend 和 Thread.resume 被废弃了?
Thread.suspend 天生容易引起死锁。如果目标线程挂起时在保护系统关键资源的监视器上持有锁,那么其他线程在目标线程恢复之前都无法访问这个资源。如果要恢复目标线程的线程在调用 resume 之前试图锁定这个监视器,死锁就发生了。这种死锁一般自身表现为“冻结( frozen )”进程……
作者: onlyou13 发布时间: 2011-08-08
解决一下我所说的实际问题呢? :(
作者: WinSockCF 发布时间: 2011-08-08
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28