解决上一节中延时函数占CPU使用率(达50%)的第二种方法是利用消息机制,通过API函数MsgWaitForMultipleObjects等待消息或超时的到来,从而避免使用循环检测使CPU占用率过高。完整的改进版Delay函数代码如下:
procedure Delay(dwMilliseconds:DWORD);
var
endTick: DWORD;
Event: THandle;
begin
Timer1.Enabled:=False;
Event := CreateEvent(nil,False,False,nil);
try
endTick := GetTickCount+dwMilliseconds;
while (dwMilliseconds > 0) and
(MsgWaitForMultipleObjects(1, Event, False,
dw......
阅读全文