您的位置:首页 > 移动开发

Application.ProcessMessages

2011-11-11 10:09 323 查看

Application.ProcessMessages

//如果有这样一个循环,是非常可怕的;因为它完不了,你得等着.
procedureTForm1.Button1Click(Sender:TObject);
var
i:Integer;
begin
fori:=0toMaxIntdo
begin
Text:=IntToStr(i);
end;
end;

//即使这样也无济于事,因为在循环期间你执行不了Button2Click
var
b:Boolean;

procedureTForm1.Button1Click(Sender:TObject);
var
i:Integer;
begin
b:=True;
fori:=0toMaxIntdo
begin
ifbthenText:=IntToStr(i)elseExit;
end;
end;

procedureTForm1.Button2Click(Sender:TObject);
begin
b:=False;
end;

//如果在循环期间...
fori:=0toMaxIntdo
begin
ifbthenText:=IntToStr(i)elseExit;
{看看还有其他什么事情发生}
end;

//Application.ProcessMessages就是干这个的!
var
b:Boolean;

procedureTForm1.Button1Click(Sender:TObject);
var
i:Integer;
begin
b:=True;
fori:=0toMaxIntdo
begin
ifbthenText:=IntToStr(i)elseExit;
Application.ProcessMessages;{!}
end;
end;

procedureTForm1.Button2Click(Sender:TObject);
begin
b:=False;
end;
防止进程阻塞,使程序能够响应消息队列中的其他事件。

比如你下载一个大文件的时候,还未下载成功,那么整个程序可能阻塞在这里,而不响应其他事件。但是,如果你在下载过程中,使用了processmessages就可以在下载的同时处理其他事情,响应鼠标事件等。
转载自万一的博客
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: