当前位置:主页>销售管理软件> 列表

线程无法resume??? 找财务软件实用教程

财务软件版1楼: 我在主线程中创建了一个线程:
MyHeartBeat:=TheartbeatThread.Create(heartbeat); //传了一个心跳间隔值
线程中
constructor TheartbeatThread.Create(interval:integer);
begin
Finterval:=interval;
inherited Create(True);
end;
我在主线程中,用timer检测socket的连接状态.一旦发现断开,就MyHeartBeat.Suspend;
如果重新连上.
if MyHeartBeat.Suspended then
MyHeartBeat.Resume;
问题是:
重新连接后,MyHeartBeat.Resume后,线程并没有唤醒!~!!!
求指点迷津!!

2楼: 怎么没有人帮我看看啊a 如财务软件实用教程

3楼: 可能的原因,多次MyHeartBeat.Suspended 后需要多次MyHeartBeat.Resume才能唤醒

4楼: 我发现是timer引起的,因为我将resum的地方不放在timer中,就成功了 .
不晓得真是原因是不是这个样子啊!!

5楼: 帮顶!

╭=========================================╮

80G海量源代码,控件,书籍全免费狂下不停!

http://www.source520.com

╰=========================================╯

6楼: TThread的源码有问题,你可以打开源码看看,有两个标志线程是否挂起的变量设置上有问题。如果创建线程时用Create(True)之后再在线程中用Suspend就OK了。我遇到同样的问题,当时自己写了一段代码实现了Resume和Suspend。主要就是用活Sleep函数。

财务软件版7楼: 多人接受答案了。