加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 如何在长循环中处理消息时最小化开销

发布时间:2020-12-15 09:43:01 所属栏目:大数据 来源:网络整理
导读:我的Delphi程序中有一些很长但很简单的循环,它可能循环数百万次并需要几秒钟才能执行.循环内部的代码非常快并且已经过优化.这需要很长时间,因为它已经完成了很多次. 例如.: Screen.Cursor = crHourGlass;R := FirstRecord;while R nil do begin { do someth
我的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是唯一的方法.

解决方法

你可以把工作循环放在一个线程中,释放主线程进行GUI循环处理.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读