我在用ADOQUERY查询数据时,可能数据量比较大,要一分钟,能不能采用多线程,在查询数据的同时,可以做别的数据.现在查询时,不能动,一动好像死机似的.白屏.
解决方案 »
- 组成超级计算机
- 请问richedit任何禁止更新?
- delphi7在winxp和windows server2003下的窗体调用问题?
- 谁发给我李维23日在成都讲课的PowerPoint文件和示例文件,十分感谢。EMail: [email protected]
- 怎么用DELPHI做数据备份的功能?
- 请问,单元的Private、Public、Publiced的区别
- ADOTable怎样清空数据?原谅我提如此简单的问题!
- 质疑王志东的复出江湖兼我的软件发布会,嘿嘿
- 求教 ,inno安装制作,百度搜霸插件 支付宝打盒烟感谢
- 在DBGRID中处理日期的输入?
- 哪位朋友推荐一本数据库引擎方面的书?编写组件用到数据库引擎这方面的知识
- 大家帮我看一下这句delphi语句
function ThreadQueryFunc(lpParameter:Pointer): Integer; stdcall;
var
adoconn:TAdoConnection;
adoquery:TAdoQuery;
begin
//
adoconn:=TAdoConnection.create(nil);
......
end;
//线程执行
AThreadId:DWORD;
CreateThread(nil, 0, @ThreadQueryFunc, nil, 0, AThreadId);
private
procedure Query;
protected
procedure Execute;override;
end;
//Query的实现部分
procedure TQueryThread.Query;
begin
with form1.ADOQUERY do
...
end;procedure TQueryThread.Execute;
var
i : integer;
begin
inherited;
Synchronize(Query);
end;
待费旗 给出了一段示例了。我补充下:
1.上面的代码只可能解决界面的不响应问题,并不能提高执行效率,因为Synchronize方法是把过程放在主线程里执行的.
2.你可以把form1.ADOQUERY在线程类的Create里传入(重载create),然后在execute里对它进行操作.
3.对于界面元素的操作,你可以把它放到Synchronize方法里.这样有利用同步和效率.