sleep是会阻塞线程的
网上有些延迟函数测试下来还是会阻塞,而接下来推荐的代码则不会
1 2 3 4 5 6 7 8 9 |
procedure delay(dwMilliseconds:integer); var firsttickcount: longint; begin firsttickcount := gettickcount; repeat application.processmessages; until ((gettickcount - firsttickcount) >= longint(dwMilliseconds)); end; |
用gettickcount计时有限制啊,精度一般大于10ms,而且,系统启动时间过长获取到的值会归零,貌似。
-
BccSafe 2013 年 8 月 8 日 下午 3:28回复
delphi中规定longint上限为2147483647,因为单位是毫秒,换算下是24.8天,所以基本不用担心,极端的不考虑
至于精度也不需要考虑,就算延迟1秒也不在乎那10几毫秒的精度
归零的问题我百度了下,是连续开机大约49天以后才会(不考虑极端)- -这些细节的确是我没注意到,在服务器上运行这些代码可能会出现问题
另外,之所以说比sleep好,是因为不堵塞进程,这个才是这篇文章的意义所在。
http://www.bccsafe.com/
时间: 2024-10-12 23:24:53