如何在执行倒数据的时候应用多线程的方法实现进度条提示。

Shiyl 2003-09-29 09:54:43
如题
最好有相应代码
...全文
70 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
huojiehai 2003-09-30
  • 打赏
  • 举报
回复
如果你用ADOCONNECTION.EXECUTE作为一个不可分割的原子单位执行,不可能做到准确提示。

像这种进度提示,
一是使用欺骗提示,就是用线程,把你的导数据写到子线程中,主线程显示进度信息;如果你不想使用线程的话,可做个AVI用动画控件显示进度,让用户感到运行你的程序时不是死机。

二,准确提示进度,要把你的整个导数据过程分为一个一个独立的单位,然后用楼上所说的
application.processmessages(好像是这样写的) 在每执行完一个独立的单位后执行一下这条语句,同时加进度.

例如用query导入数据时,一开始肯定知道数据集的记录个数,每Post一条数据记录,
就application.processmessages;form2.update;//self指进度条所在的窗口

像你所说的执行的是SQL语句,看看能不能分成很小的可独立执行的单位,如果分不到,只能做欺骗进度提示。
Shiyl 2003-09-30
  • 打赏
  • 举报
回复
lonaerd(罗纳尔多)正是这个意思,如何实现啊?
给个例子行不?
lonaerd 2003-09-30
  • 打赏
  • 举报
回复
创建回调函数,在函数里创建多线程序。
Shiyl 2003-09-30
  • 打赏
  • 举报
回复
我用ADOCONNECTION.EXECUTE(SQL语句)导的整批导入,
有方法吗?
kejian 2003-09-30
  • 打赏
  • 举报
回复
你是怎么导的啊? 整批导还是一条一条导的啊?

一条一条导就可以有进条了。

在循环的时候加入 application.processXXXXX 我忘了。
Shiyl 2003-09-30
  • 打赏
  • 举报
回复
up
Shiyl 2003-09-30
  • 打赏
  • 举报
回复
是的从DBF到ACCESS,难道只能用假象吗?
huojiehai 2003-09-30
  • 打赏
  • 举报
回复
要是这样哪就用动画控件播放AVI文件就是最好的选择
lonaerd 2003-09-30
  • 打赏
  • 举报
回复
Shiyl((云淡)||(风清)) :

一般对此类进度显示都采用阻塞方法,ACCESSHOOK,应该听说过吧?
但是无论如何,都要有个方法能够得到执行细节,然后采用回调的方法让WINDOWS来调用你的函数,从而显示该过程的进度。
SQL导数据太封装了,你要查查资料用没有可用的API,否则很难实现
Shiyl 2003-09-30
  • 打赏
  • 举报
回复
huojiehai(海天子)兄
谢谢!
很高兴你看到我的留言了。
我的SQL语句看来不能分成更小的执行单位了,所以只能用假象了。
我对线程不熟悉,现在去看看,有没有相关资料啊?
hkbarton 2003-09-29
  • 打赏
  • 举报
回复
导数据是指从数据库导数据吗?这个好象没有办法实现准确的进度啊
Shiyl 2003-09-29
  • 打赏
  • 举报
回复
忘说了,导数据时候CPU占用率接近100%

5,379

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧