线程中
写法一:
while(true)
begin
if 条件成立 then
do sth
else
什么也做;
end;写法二:
while(true)
begin
if 条件成立 then
do sth
else
begin
Application.ProcessMessage ;
sleep(20000);
end;
end;请问哪种方法规范?
写法一:
while(true)
begin
if 条件成立 then
do sth
else
什么也做;
end;写法二:
while(true)
begin
if 条件成立 then
do sth
else
begin
Application.ProcessMessage ;
sleep(20000);
end;
end;请问哪种方法规范?
begin
if 条件成立 then
do sth;
sleep(20000);
end;
是一个死循环,如果没有Break的话
除非杀死线程,否则用TThread.Terminate()是停不掉的
再怎么调用Application.ProcessMessage和Sleep都是没有用的while not Terminated 比较合适调用Application.ProcessMessage是为了让线程能够接收到外部消息,比如终止,挂起等
用sleep是为了让线程暂停一下,解决CPU占用100%问题
两个函数目标不一样,都有必要
才用while (true)写一个死循环在死循环里Application.ProcessMessage就没有必要了
因为即使收到终止消息线程也终止不掉
使用while(true)是因为这个线程必须一直运行,一直到退出程序。
大头鸟你好,看来Application.ProcessMessage 和 sleep(20000)同时使用不会出错吧?
如果线程里要操作可视化控件或者发送消息什么的
最好用Application.ProcessMessage ,否则就会出现程序停止响应的情况
收回.Application.ProcessMessage和sleep
都是有一定针对性的,不能当作万金油用楼主也不要太死板,到处都用和绝对不用都不可取
还是应该具体问题具体分析,根据实际需要自己决定