加sleep等都是治标不治本的,降的极少.
要用Api函数,等待某个时间来到,你线程才工作,其他情况,你的线程进入休眠状态.
等待单个核心对象来才让线程工作WaitForSingleObject()
if WaitForSingleObject(FHSem, 1000) = WAIT_OBJECT_0 then
begin
end;
等待多个事件为WaitForMultipleObjects,具体用法自己查api函数
感谢各位大侠的回答,前几天已经解决了,只是我记得已经把分给分配掉了,今天进来一看怎么没结?奇怪,,不过还是感谢。。。。说一下我解决的办法:
我是按照顶楼的办法解决的,在以前的循环里,是根据一个变量来判断线程是否结束的,如下代码:
while not thread_finishdo
begin
if thread_finish then
exit;
application.ProcessMessages;
end;
之前我是在线程里加入SLEEP,无效果,后来在application.ProcessMessages之后加入sleep(100),效果非常明显。写出来共勉。