我的 Delphi 程序中有一些很长但很简单的循环,这些循环可能会循环数百万次并需要几秒钟的时间才能执行。循环内的代码非常快并且已经过优化。只是需要很长时间,因为它做了很多次。
例如:
Screen.Cursor = crHourGlass;
R := FirstRecord;
while R <> nil do begin
{ do something simple with R.Value }
R := R.NextRecord;
end;
Screen.Cursor := crDefault;
现在我不希望我的程序没有响应,所以我想在循环中添加一个 Application.ProcessMessages 。但我也希望添加的语句尽可能减慢我的循环速度。
我正在关注一个链表,所以我什至没有可用的计数变量,如果我想要间隔就必须添加一个。或者我必须添加一个计时器,但需要尽量减少检查时间。
我应该如何实现这一点以最大限度地减少增加的开销?
结论:
现在,我正在做类似 APZ28 的回答。
但从长远来看,我应该实现某种线程来处理这个问题。感谢您指出这一点,因为我认为 Application.ProcessMessages 是唯一的方法。