数据库后台查询问题,急急急,在线等待,马上给分

dragonfox 2005-02-28 07:20:17
我是第一次用delphi的线程,有个简单问题想请教大家,我在主窗体上执行一个数据库查询操作,可能很耗时,会把界面冻住,我就创建一个线程到后台执行查询,那么我的主线程怎样知道查询线程执行完毕了呢,我现在使用的方法是开始设置一个全局变量,开始查询前先复位,然后在查询线程中,查询完数据库后则把该变量复位,在主窗体上起一个定时器,不停的去查询该变量的状态,来判断查询线程是否执行完毕,我感觉这种做法不太好,效率也不高,请大侠们提供一些高效率的、常用的方法。
...全文
162 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
todouwang 2005-03-02
  • 打赏
  • 举报
回复
CreateThread()API函数中的参数 LPTHREAD_START_ROUTIN lpStartAddress
//开始执行线程的函数的地址,只要这个函数一退出,线程就结束,这个函数为TreadProc
caiso 2005-03-02
  • 打赏
  • 举报
回复
顶一下
yuaoyang 2005-03-02
  • 打赏
  • 举报
回复
dragonfox 2005-03-02
  • 打赏
  • 举报
回复
今天我这几天自己的测试,发现发消息的方法挺好用的,辛苦大家,这么晚才结贴,真不好意思,如果大家发现我的方法有问题,希望发邮件告诉我,在此我先谢过了。
dragonfox 2005-03-02
  • 打赏
  • 举报
回复
WaitForSingleObjec,是不是也必须在主线程起一个定时器,不停的去查询状态啊,不过它的效率应该高一些,我找到一个方法,用发消息postmessage通知主线程,我是在线程的Execute执行完后,用postmessage给主线程发一个消息,这样主线程不用去自己判断了,收到消息后就知道线程执行完毕,我经过试验还比较好用,不知道这样做有没有什么隐患???
zzlazio 2005-03-01
  • 打赏
  • 举报
回复
用WaitForSingleObject检查该进程是否结束。
cdsgajxlp 2005-03-01
  • 打赏
  • 举报
回复
数据大的情况下,我个人认为用线程查询最好
把sql语句优化一下
laiqinghe 2005-03-01
  • 打赏
  • 举报
回复
timer确实很浪费资源的

processmessage也很花费时间

但是我通常是这么做的

我没有什么样的好办法 但是也很关注



dragonfox 2005-03-01
  • 打赏
  • 举报
回复
sql语句已经没有办法优化了,因为有时候返回的记录数可能上百万条,用timer时关键要用processmessage刷新界面,这个好像挺耗时的
merkey2002 2005-02-28
  • 打赏
  • 举报
回复
timer時間設久一點,應該不太耗資源的
78hgdong 2005-02-28
  • 打赏
  • 举报
回复
我一般都不用线程查询,处理烦啊,优化一下你的SQL语句行不?
tengxiang05 2005-02-28
  • 打赏
  • 举报
回复
.
dragonfox 2005-02-28
  • 打赏
  • 举报
回复
自己顶一下

2,507

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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