给你一个例子,希望有帮助
QuerThrd.Pas unitQuerThrd; interface uses Classes,DBTables; type TQueryThreadΚclass(TThread) private fQuery:tQuery; protected procedureExecute;override; public constructorCreate(Suspended:Boolean;Query:
TQuery); end; implementation constructor TQueryThread.Create(Suspended:Boolean;Quer
y:TQuery); begin inheritedCreate(Suspended); fQuery:ΚQuery; FreeOnTerminate:ΚTrue; end; procedureTQueryThread.Execute; begin fQuery.Open; end; end. 在上面这个简单的例子中,我们构造了一个TThread的子类TQueryThread,用于在后台执行数据库查询。在该类的Create函数中,传递了两个参数Suspended和Query
,其中Suspended用于控制线程的运行,如果Suspend为真,TQueryThread类的线程在建立后将立即被悬挂,一直到运行了Resume方法,该线程才会继续执行,Query参数用于接受一个已经存在的Query控件(在窗体中真正的Query控件)而使它在多线程的情况下运行。Execute是最重要的过程,它是类TQueryThread的执行部分,所有需要在这个多线程类中运行的语句都必须写在这个过程里。
QuerThrd.Pas unitQuerThrd; interface uses Classes,DBTables; type TQueryThreadΚclass(TThread) private fQuery:tQuery; protected procedureExecute;override; public constructorCreate(Suspended:Boolean;Query:
TQuery); end; implementation constructor TQueryThread.Create(Suspended:Boolean;Quer
y:TQuery); begin inheritedCreate(Suspended); fQuery:ΚQuery; FreeOnTerminate:ΚTrue; end; procedureTQueryThread.Execute; begin fQuery.Open; end; end. 在上面这个简单的例子中,我们构造了一个TThread的子类TQueryThread,用于在后台执行数据库查询。在该类的Create函数中,传递了两个参数Suspended和Query
,其中Suspended用于控制线程的运行,如果Suspend为真,TQueryThread类的线程在建立后将立即被悬挂,一直到运行了Resume方法,该线程才会继续执行,Query参数用于接受一个已经存在的Query控件(在窗体中真正的Query控件)而使它在多线程的情况下运行。Execute是最重要的过程,它是类TQueryThread的执行部分,所有需要在这个多线程类中运行的语句都必须写在这个过程里。
在线程中使用COM的规则都得遵守。