看代码、有处不明白,如下://在线程的执行函数里边
procedure TDoCom.Execute;
Var
  lWaitEvent:TEvent;
  ltd:THandle;
begin
  inherited;
  lWaitEvent:=TEvent.Create();//创建?
  while M_Quit=false do
  begin
    ltd:=CurrentThread.ThreadID;//
    lWaitEvent.WaitFor(500);//这里是干什么的?只是延时么?
  end;
end;

解决方案 »

  1.   

    WaitFor(500)确实可以产生延时的效果,就是执行会停在这儿最多500毫秒;但如果在500毫秒之内,比如100毫秒的时候lWaitEvent就被SetEvent了,执行就会继续下去,不会等够500毫秒。具体到你的代码,lWaitEvent是一个局部对象,其他线程无法访问到它,也就不能执行SetEvent,所以lWaitEvent会在每次循环中等够500毫秒之后再继续。