while true do Application.ProcessMessages;这句话可以让CPU处于很高的占用率,但是程序不卡
不知道对系统中其他运行的程序是否能造成不良影响?
不知道对系统中其他运行的程序是否能造成不良影响?
解决方案 »
- [散分]祝贺Documentation Insight集成到了Delphi XE2
- SQL_server中的DTS包的错误参数如何返回Delphi中????
- dephi8 安装之后怎么不能编译运行啊~~~~
- delphi 能否调用MySQL中的数据,如何调用?
- TField.OnGetText的使用问题!日期不可用吗?
- 怎样才能让Form1中的数据控制组件连上DataModule里面的DataSource?
- 放分200。(告别delphi论坛)2003-6-19晚结
- 如何把在listview中被选中的图片传给image?
- 急,急。帮忙找找原因
- 创建动态控件时,遇到的问题,望答?100分送上!在线等!
- 有谁用DELPHI写共享软件?大家一起交流啊
- 为什么反复调用一个赋值函数会造成溢出呢???
begin
sleep(50);
Application.ProcessMessages;
end;就不会影响别的程序了
他只不过是让你运行的程序暂停一下
来处理一下消息列表里的其他消息
处理完后再回到你的程序段这样会造成CPU占用率很高,因为这个函数同样是让你的程序去处理其它函数了
而不是让程序把所有的工作都暂停
如果想减低CPU占用率,可加个Sleep(1);如果CPU占用率是太高的话不会对其他程序造成影响
var
Handled: Boolean;
begin
Result := False;
if PeekMessage(Msg, 0, 0, 0, PM_REMOVE) then
begin
Result := True;
if Msg.Message <> WM_QUIT then
begin
Handled := False;
if Assigned(FOnMessage) then FOnMessage(Msg, Handled);
if not IsHintMsg(Msg) and not Handled and not IsMDIMsg(Msg) and
not IsKeyMsg(Msg) and not IsDlgMsg(Msg) then
begin
TranslateMessage(Msg);
DispatchMessage(Msg);
end;
end
else
FTerminate := True;
end;
end;procedure TApplication.ProcessMessages;
var
Msg: TMsg;
begin
while ProcessMessage(Msg) do {loop};
end;
我加了Sleep(1)的,不过会影响代码执行效率,代码执行事件变长很多
跑满cpu还不影响别的程序那啥叫影响?