首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

关于sleep有关问题

2012-04-05 
关于sleep问题今天做程序,需要计算一下调用函数之前和之后所用的时间,期间用了sleep,但是结果发现,我sleep

关于sleep问题
今天做程序,需要计算一下调用函数之前和之后所用的时间,期间用了sleep,但是结果发现,我sleep(200),得到的时间竟然有188的时候,我不明白为什么会小于200,这是sleep的问题,还是我计算时间函数的问题呢?,求高人回答。。。谢谢

Delphi(Pascal) code
procedure TForm1.Button1Click(Sender: TObject);var    i,s:integer;    ReadPre, ReadSith: TDateTime;begin    i:=0;    while i<100 do    begin        ReadPre := Now;        sleep(200);        ReadSith := Now;        s:= MilliSecondsBetween(ReadPre, ReadSith);        memo1.Lines.Add(inttostr(s));        inc(i);    end;end;end.


如上 算出来的时间 每隔3,4个203 就会出现一个188这样的数,这是为什么呢

[解决办法]
你的问题我不知道,10毫秒比较对系统的影响很小,如果LZ不是做什么很精密的器件,我想也不必纠结与这点时间吧。如果必须要求那么准确,LZ能不能试下用TTimer组件,因为我一般很少用sleep,会让系统死在那里很不爽的!
[解决办法]
sleep不精确
[解决办法]
探讨
sleep不精确

[解决办法]
Delphi(Pascal) code
procedure MyWait(iLen:DWORD);var  dwWait :DWORD;begin  dwWait := GetTickCount();  while GetTickCount - dwWait < iLen do  begin    sleep(1);    Application.ProcessMessages;  end;end;
[解决办法]
间隔还是使用GetTickCount
sleep 是暂停的意思。比如你拖动窗口也是会占用时间的。
[解决办法]
为什么要这么在意几毫秒,或者几十毫秒呢?需要非常精确?
[解决办法]
太精确了占用CPU就很高,绝大部分API的精度都是15一个片,
[解决办法]
无语了
[解决办法]
GetTickCount的精度也不够,大约10毫秒左右.

[解决办法]
GetTickCount 我试过了,出现同样的问题,应该是精度的问题

热点排行