线程无法resume???(3分)

  • 主题发起人 主题发起人 6ysnow
  • 开始时间 开始时间
6

6ysnow

Unregistered / Unconfirmed
GUEST, unregistred user!
我在主线程中创建了一个线程:
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后,线程并没有唤醒!~!!!
求指点迷津!!
 
怎么没有人帮我看看啊a
 
可能的原因,多次MyHeartBeat.Suspended 后需要多次MyHeartBeat.Resume才能唤醒
 
我发现是timer引起的,因为我将resum的地方不放在timer中,就成功了 .
不晓得真是原因是不是这个样子啊!!
 
帮顶!
╭=========================================╮
80G海量源代码,控件,书籍全免费狂下不停!
http://www.source520.com

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