等待函数(保持界面正常响应)
来源:互联网 发布:java this关键字详解 编辑:程序博客网 时间:2024/06/06 20:02
取自网络
//延时函数,msec 为毫秒
procedure Delay(msec: single);
var
FirstTickCount: real;
begin
if msec > 0 then
begin
FirstTickCount := GetTickCount();
FirstTickCount := FirstTickCount + msec;
while FirstTickCount > GetTickCount() do
Application.HandleMessage; //关键在这里
end;
end;
// 测试CPU占用率<1% (CPU i3)
// 等待函数(保持界面正常响应) MSecs为毫秒
procedure WaitTime(MSecs: Integer);
var
FirstTickCount, Now: Longint;
begin
FirstTickCount := Windows.GetTickCount();
repeat
Now := Windows.GetTickCount();
Application.ProcessMessages;
until (Now - FirstTickCount >= MSecs) or (Now < FirstTickCount);
end;
// 测试CPU占用率10% -- 25% (CPU i3)
// *通过测试,在线程中调用Delay函数,存在线程函数执行中断(不在有任何响应,但主程序仍正常执行)的情况,而调用WaitTime则正常
// 为降低CPU占用率将WaitTime函数代码修改如下:
// 等待函数(保持界面正常响应) MSecs为毫秒
procedure WaitTime(MSecs: Integer);
var
FirstTickCount, Now: Longint;
begin
FirstTickCount := Winapi.Windows.GetTickCount();
repeat
Sleep(1); // 避免CPU占用率高
Application.ProcessMessages;
Now := Winapi.Windows.GetTickCount();
until (Now - FirstTickCount >= MSecs) or (Now < FirstTickCount);
end;
// 测试CPU占用率 < 1% (CPU i3)
- 等待函数(保持界面正常响应)
- 等待函数(界面保持响应正常)不同于Sleep
- 如何让程序忙时保持界面响应
- 如何做到既保持XP风格界面又能正常显示toobar中的图标
- iOS 6 开发进阶与实践----第14章 保持界面响应
- 多线程任务时,向程序界面发出信息,并且等待用户响应
- 正在等待localhost响应
- 展讯正常开机界面(一)
- 展讯正常开机界面(二)
- 请保持正常的心思
- MFC 主界面函数中线程等待避免界面卡死的处理方法
- MFC 主界面函数中线程等待避免界面卡死的处理方法
- MFC 主界面函数中线程等待避免界面卡死的处理方法
- 等待显示界面
- Android 实现等待界面
- html 等待界面
- 页面载入等待界面
- QT学习之事件处理(二) 处理密集响应时的响应保持
- .net加载子目录中动态库方法
- vim 颜色设置
- Qt5.3.1 MinGW482 release静态版编译结果、过程及QtCreator配置(转)
- Ajax 和 jQuery 实现进度条+上传文件到Django
- 二叉查找树 模板实现 C++
- 等待函数(保持界面正常响应)
- DSP启动流程
- ThreadLocal的使用
- Hadoop 新 MapReduce 框架 Yarn 详解
- 《Windows核心编程》——五 作业
- delphi Inc函数和Dec函数的用法
- Java 其他
- TCP 相关参数解释
- RTMP Server不只是FMS,还有很多其他选择