小弟想学一下多线程技术,大虾可否指点一、二 (100分)

  • 主题发起人 主题发起人 Jenky.w
  • 开始时间 开始时间
J

Jenky.w

Unregistered / Unconfirmed
GUEST, unregistred user!
小弟想学一下多线程技术,大虾可否指点一、二
比如:我有一个
insert into aa select * from bb where.....
这样的SQL语句,由于我不会用多线程技术来使得显示插入记录
的进程,所以想请大虾指教一下,大概将编程方法写一下。
万分感谢!!!
--
 
Delphi封装了TThread对象,看看Delhpi对TThread的帮助,里面有一个完整的Example.
 
假设你要更新100条记录:
选择菜单命令File, NEW一个Thread Object线程对象,取名TThrUpdateBB,
并添加属性:
property Query: TQuery read FQuery write FQuery;
property Progress: Integer read FProgress;
在EXECUTE中写入SQL执行代码:

procedure TThrUpdateBB.Execute;
var
C: Count;
begin
{ Place thread code here }
if not Assigned(FQuery) then
Exit;
with FQuerydo
begin
Active := False;
Params.Clear;
Params.CreateParam(ftInteger,'VID', ptInput);
SQL :='insert into aa select * from bb where ID = :VID';
end;

C := 100;
FProgress:=0;
while not Terminateddo
begin
with FQuerydo
begin
Params[1].AsInteger := I;
Execute;
end;

Inc(FProgress);
if FProgress>=C then
Break;
end;

end;

线程执行前应把QUERY赋值。如果要显示进度,添加一个进度窗体,线程执行时创建
此窗体并显示,每更新一条(或几条)记录则将进度窗口更新(要用Synchronize),
在进度窗口中点取消则执行本线程的Terminate方法,应该很简单的。
 
>线程执行时创建此窗体并显示
相应地:线程结束时释放此窗体
 
多人接受答案了。
 
后退
顶部