A abcxca Unregistered / Unconfirmed GUEST, unregistred user! 2002-10-28 #1 以前有人让程序在运行的过程中暂停几秒,用的是循环语句。 但这种作法缺点是会令CPU的使用率马上升到100%。 有没有一种更好的办法,暂停几秒而不会令CPU使用率突升??
S spymaster Unregistered / Unconfirmed GUEST, unregistred user! 2002-10-28 #3 procedure Sleep(ATime: cardinal); Parameters ATime: cardinal The number of milliseconds to sleep.
S Shawls Unregistered / Unconfirmed GUEST, unregistred user! 2002-10-28 #5 sleep会使程序失去响应, 可以通过一个循环,然后判断,时间 这个时间可以通过获取系统运行时间来得到 就是gettickcount vb声明为: Private Declare Function GetTickCount Lib "kernel32" () As Long
sleep会使程序失去响应, 可以通过一个循环,然后判断,时间 这个时间可以通过获取系统运行时间来得到 就是gettickcount vb声明为: Private Declare Function GetTickCount Lib "kernel32" () As Long
B beta Unregistered / Unconfirmed GUEST, unregistred user! 2002-10-28 #7 // sleep会使程序失去响应 杞人忧天吧,人家要的就是这个效果:) Sleep(ms); 可行。
J jsxjd Unregistered / Unconfirmed GUEST, unregistred user! 2002-10-29 #8 这是因为你是单线程,如果是多线程,就把时间交给其它线程了。
A abcxca Unregistered / Unconfirmed GUEST, unregistred user! 2002-11-25 #9 LuJuhe 说的方法是会引起WINDOWS不认识该Sleep的程序; shawls 说的会引起CPU的使用马上升为100%; jsxjd 说的线程问题,但试过用DELPHI写一个线程,什么也不干,就每隔几秒 刷新一下某个Edit控件,结果运行2小时后机子变慢,在取消屏保后该程序的窗 口不能自行刷新,只剩个空白的框框,同时什么反应都没有,只能强行杀掉该程序.
LuJuhe 说的方法是会引起WINDOWS不认识该Sleep的程序; shawls 说的会引起CPU的使用马上升为100%; jsxjd 说的线程问题,但试过用DELPHI写一个线程,什么也不干,就每隔几秒 刷新一下某个Edit控件,结果运行2小时后机子变慢,在取消屏保后该程序的窗 口不能自行刷新,只剩个空白的框框,同时什么反应都没有,只能强行杀掉该程序.
T Town Unregistered / Unconfirmed GUEST, unregistred user! 2002-11-25 #10 建议不要使用sleep, 有很多问题... 在本站内搜索 mydelay, 可以查到用 Gettickcount编的函数, 非常好用。
N naughtboy Unregistered / Unconfirmed GUEST, unregistred user! 2002-11-26 #12 sleep以后可以application.postmessages亚
影 影 子 Unregistered / Unconfirmed GUEST, unregistred user! 2002-11-26 #13 如果要暂停几秒,不要用sleep,程序不会响应其它消息。 在站内搜索一下delay
T tseug Unregistered / Unconfirmed GUEST, unregistred user! 2002-11-26 #14 procedure Delay(aTimeOut: Cardinal); var T : Cardinal; Msg : TMsg; begin T := GetTickCount; while GetTickCount-T > aTimeout do begin if PeekMessage(Msg, 0, 0, 0, PM_REMOVE) then begin TranslateMessage(Msg); DispatchMessage(Msg); end; end end;
procedure Delay(aTimeOut: Cardinal); var T : Cardinal; Msg : TMsg; begin T := GetTickCount; while GetTickCount-T > aTimeout do begin if PeekMessage(Msg, 0, 0, 0, PM_REMOVE) then begin TranslateMessage(Msg); DispatchMessage(Msg); end; end end;
P pipo Unregistered / Unconfirmed GUEST, unregistred user! 2002-11-27 #15 begin sleep(5000); Application.ProcessMessages; end; 两句话就解决了,何必这么麻烦
影 影 子 Unregistered / Unconfirmed GUEST, unregistred user! 2002-11-27 #16 TOipo 你试试看是不是解决了。例如运行上面代码后在5秒内点击按钮或者拖动窗体看看是否有作用。 我不再回复了。这个问题只要在站内搜索一下就有一大堆类同的答案。 http://richsearch.com/
TOipo 你试试看是不是解决了。例如运行上面代码后在5秒内点击按钮或者拖动窗体看看是否有作用。 我不再回复了。这个问题只要在站内搜索一下就有一大堆类同的答案。 http://richsearch.com/
P pipo Unregistered / Unconfirmed GUEST, unregistred user! 2002-11-27 #17 是我错了,不假思索,该死该死 Application.processmessages是用在长时间处理数据的时候用的,不适合这里,嘿嘿 在陈宽达的《Delphi深度历险》中有该问题的多种解决办法,可以参考参考
是我错了,不假思索,该死该死 Application.processmessages是用在长时间处理数据的时候用的,不适合这里,嘿嘿 在陈宽达的《Delphi深度历险》中有该问题的多种解决办法,可以参考参考