读书人

关于TEvent的疑点

发布时间: 2013-08-26 12:17:40 作者: rapoo

关于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毫秒之后再继续。

读书人网 >.NET

热点推荐