|
|
导航: |
论坛 -> 未知:1
斑竹: |
|
作者: |
青云 |
▲△△△△ |
-
|
|
|
2003/8/6 21:24:07 |
标题: |
着急!!,如何编写一个时间延时函数? |
浏览:2387 |
|
加入我的收藏 |
楼主: |
着急!!,如何编写一个时间延时函数? 我现在编写一个串口通讯软件,发送一个指令后要延时几百豪秒后 再发送接受指令。
比如 : send('01 01 00 02'); //发送; TimeDelay(500); //延时500毫秒 str:=recieve; //接收
下面是我编写的延时函数
Procedure TimeDelay(DT:DWORD); var TT:DWORD; begin TT:=GetTickCount(); while GetTickCount()-TT<DT do Application.ProcessMessages; end;
这个函数我用了半年多,一直不觉得有什么问题。 但是今天我发现了一个很严重的问题。
当运行 TimeDelay这个函数的时候。我打看任务管理器,发现CPU的利用率为100%,我感到很惊讶。 想不到用这个函数耗尽了cpu的资源。
于是我想重写这个函数。其实用Timer控件可以控制时间间隔,但是不行,用起来很不方便。
有谁能帮我重写这个TimeDelay函数,在运行的时候不消耗多少cpu资源??? 我估计好像要用到消息处理机制。 各位大哥帮帮忙,小弟的网站 www.yzsoftware.com ,上面有我个人用的delphi做的几个软件,如对其中感兴趣的,可以来信索取源码。 my e-mail:yzdzc@163.com
----------------------------------------------
|
作者: |
zizii (高高高级馒头) |
★☆☆☆☆ |
-
|
神秘会员 |
|
2003/8/6 21:45:19 |
1楼: |
你用 sleep(500) 试试看。
----------------------------------------------
维护世界和平,共创美好盒子。
|
作者: |
boy (阿門) |
★☆☆☆☆ |
-
|
盒子活跃会员 |
|
2003/8/7 10:08:26 |
3楼: |
效果不错 加上 esc 中止 效果更不错
----------------------------------------------
|
作者: |
|
2003/8/7 10:18:11 |
4楼: |
我想将主程序放到线程里,直接调用sleep,主界面不会死。
----------------------------------------------
-
|
|