procedure TForm1.tmr1Timer(Sender: TObject);
begin
windows.Beep(100, 100);
windows.Beep(100, 100);
while true do
begin
Application.ProcessMessages;
end;
end;
这种代码会导致timer会被反复触发。
procedure TForm1.tmr1Timer(Sender: TObject);
begin
tmr1.enabled := false
try
windows.Beep(100, 100);
windows.Beep(100, 100);
while true do
begin
Application.ProcessMessages;
end;
finally
tmr1.enabled := false;
end;
end;
则不会导致wm_timer时间消息的频繁发生。
下面的代码,也不会反复触发。因为系统太忙了。这种方式不会导致消息列表溢出。
procedure TForm1.tmr1Timer(Sender: TObject);
var
i: Integer;
begin
windows.Beep(100, 100);
windows.Beep(100, 100);
i := 0;
while true do
begin
Sleep(100);
Inc(i);
btn1.Caption := IntToStr(i);
end;
end;