今天做程序,需要计算一下调用函数之前和之后所用的时间,期间用了sleep,但是结果发现,我sleep(200),得到的时间竟然有188的时候,我不明白为什么会小于200,这是sleep的问题,还是我计算时间函数的问题呢?,求高人回答谢谢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这样的数,这是为什么呢
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这样的数,这是为什么呢
你可以试试用Sleep(1),实际消耗的时间基本在15~16毫秒
procedure MyWait(iLen:DWORD);
var
dwWait :DWORD;
begin
dwWait := GetTickCount();
while GetTickCount - dwWait < iLen do
begin
sleep(1);
Application.ProcessMessages;
end;
end;试试这个
sleep 是暂停的意思。比如你拖动窗口也是会占用时间的。
有人推荐我用GetTickCount
但是没用过
这个帖子 没人回复 谁去接下分啊 20分也是分啊