如何使用多线程完成BatchMove的执行任务?(若分数不够,再加分!) (200分)

  • 主题发起人 主题发起人 kypansky
  • 开始时间 开始时间
K

kypansky

Unregistered / Unconfirmed
GUEST, unregistred user!
我要在Delphi下,用BatchMove导数据。但因为数据量太大。要使用多线程。但不知道如何实现?能给个源代码吗?
(若分数不够,再加分!)
 
建立一个线程,重载Execute方法
type
TQueryThread = class(TThread)
protected
procedure Execute;
override;
end;

procedure TQueryThread.Execute;
begin
//这里可以写你的运算,要加上对象的名字哦
PhoneFeeListFrm.QryBody.Open;
end;
在你的程序里其它地方这样建立一个新线程,这样就会运行Exectue事件
try
TQueryThread.Create(false);
except
Exit;
end;

 
type
TBatchMoveThread = class(TThread)
private
FBatchMove: TBatchMove;
FDestination: TTable;
FSource: TBDEDataSet
protected
proceduredo
Move;
procedure Execute;
Override;
public
  Constructor Create(Suspended: Boolean;
BatchMove: TBatchMove;
Destination: TTable;
Source: TBDEDataSet);
end;
{........................} ///不要偷懒,自己写一点吧 implementation
procedure TBatchMoveThread.DoMove;
begin
{.................} //在这里可以加一点判断数据源什么的啦!!!!!
FBatchMove.Execute;
end;
procedure TBatchMoveThread.Execute;
begin
//考虑要同步之类的,在这里可以处理啦,所以加了一个do
Move函数,不喜欢可以把do
Move里的放到下面来哦!!!!!!!!!
do
Move;
//Synchronize(DoMove);
end;
Constructor TBatchMoveThread.Create(Suspended: Boolean;
BatchMove: TBatchMove;
Destination: TTable;
Source: TBDEDataSet);
begin
 Inherited Create(Suspended);
 FBatchMove:= BatchMove;
FDestination:= : Destination;
FSource:= Source;
 FreeOnTerminate:= True;
//结束后释放线程
end;
{...........................}//下面是你的程序代码啦
搞定啦,
看楼主还有什么问题啦????????
有什么问题贴出来哦!!!!!!
呵呵~~~~~~~~~~~~~~~~~~~
 
后退
顶部