delphi线程

TypeTADOThread=class(TThread)procedureExecute(AdoConn:tadoconnection;Adoquery:Tadoque... Type
TADOThread=class(TThread)
procedure Execute(AdoConn:tadoconnection;Adoquery:Tadoquery;SQLString:string);
destructor Destroy;
end;
implementation

{$R *.dfm}

procedure TADOThread.Execute(AdoConn:tadoconnection;Adoquery:Tadoquery;SQLString:string);
begin
CoInitialize(nil);
adoquery.Connection:=adoconn;
adoconn.LoginPrompt:=false;
adoquery.SQL.Text:=sqlstring;
if pos('select',sqlstring)=0 then
adoquery.ExecSQL
else
adoquery.Open;
end;
destructor TADOThread.Destroy;
begin
couninitialize;
end;
请问这个线程有什么问题,测试过可以通过,但并不能体现线程的优点。
softwb说我这里只有一个主线程,因为是刚学,,而且还是自学。所以有很多不懂的地方。
我主要是想通过ADO实现多线程查询数据,解决因为数据量太大而做一个查询要等待过长的时间。
展开
 我来答
mit1208
2010-10-28 · TA获得超过2347个赞
知道大有可为答主
回答量:2743
采纳率:0%
帮助的人:1849万
展开全部
你使用线程类有问题:
procedure Execute(AdoConn:tadoconnection;Adoquery:Tadoquery;SQLString:string);

Execute不用参数,直接在后边override;就可以了.是覆盖方法

想动态生成ADO的话.可以构造一个函数.在Create构造函数中动态创建
在Destroy析构函数中释放ADO

在Execute中是执行的代码,中间如果是操作VCL或全局变量的话.要注意同步!

还有.1楼说的有问题.

你使用的是线程类创建,是一个线程.

跟主线程无关.!在线程中使用synchronize,才会将线程加入到主线程中运行.

在补充一下

你可能将ADO组件加入到了窗体中,这样,把ADO组件加入到线程的构造函数中就

可以在线程中直接使用了!

百度一下.线程类使用方法,了解系统线程与进程的结构就明白了!

再补充一点"分太少了.哎~~"
EdisonChan1982
2010-10-28 · TA获得超过451个赞
知道小有建树答主
回答量:134
采纳率:0%
帮助的人:83.9万
展开全部
你要先提出问题,而不是我们帮你找问题。

线程是很有用的,比较调用一个外部程序,但想实现把外部程序关闭后才允许操作主窗口,这时用线程很容易实现这种效果。

所以一切是看你想要解决什么问题,而不是盲目使用。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
softwb
2010-10-28 · TA获得超过451个赞
知道小有建树答主
回答量:763
采纳率:0%
帮助的人:383万
展开全部
线程优点是多线程一起运行就是优点
比如一个线程执行初始化程序,另一个线程计算用户数,再另一个线程又做其它事。你就一个主线程当然看不出优点
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式