我有一个可以运行很长时间扫描数据库的应用程序.
在此过程中,我通过使用processmessage使我的程序保持响应.
当我的进度条更新并且被包含时,将触发此流程消息.
大多数情况下都可以正常工作,但是当数据库变大时,进度条上升1%需要更长的时间,程序在此之前就会无响应.
除了流程消息之外,还有另一种让我的程序保持活力的方法吗?
多线程就是答案.标准的Delphi应用程序基本上是一个单线程应用程序,可以一次完成一件事.因此gui锁定,如果它正在做其他事情,它不能保持响应.
如果你想要一个响应的gui并同时进行繁重的提升,你需要在一个单独的线程或线程中进行繁重的工作.这样你的主线程可以确保你有一个响应程序,工作线程可以完成繁重的工作.这适用于繁重的数据库工作,但也适用于例如下载文件或情况,例如远程服务器的答案可能需要很长时间.
但是这个答案可能会给你更多的答案,因为解释如何使用多线程对这个问题的解释太大了.
另一件事是:对数据库代码进行长时间的严格审查.你是如何从数据库中检索记录的,数据库上是否有好的索引等等.在开始考虑多线程之前,你可以通过优化这些代码来提高疯狂的速度.
我找到了以下资源:http://thaddy.co.uk/threads/您可以在http://cc.embarcadero.com/item/14809下载图片,以获得非常有用的线程教程.
| 归档时间: |
|
| 查看次数: |
1337 次 |
| 最近记录: |