首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

关于TEvent的疑点

2013-08-26 
关于TEvent的疑问看代码、有处不明白,如下://在线程的执行函数里边procedure TDoCom.ExecuteVarlWaitEvent

关于TEvent的疑问
看代码、有处不明白,如下:


//在线程的执行函数里边
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;

[解决办法]
WaitFor(500)确实可以产生延时的效果,就是执行会停在这儿最多500毫秒;但如果在500毫秒之内,比如100毫秒的时候lWaitEvent就被SetEvent了,执行就会继续下去,不会等够500毫秒。

具体到你的代码,lWaitEvent是一个局部对象,其他线程无法访问到它,也就不能执行SetEvent,所以lWaitEvent会在每次循环中等够500毫秒之后再继续。

热点排行