A
Airenzheng
Unregistered / Unconfirmed
GUEST, unregistred user!
我要创建一个线程,运行一段代码,需要可能要几个小时的时间:
1 创建线程
type Tas_MpsRun=Class(TThread)
Protected
Procedure Execute;Override;
end;
type
Tas_Mps_GenerateForm = class(TForm)
…………
private
procedure Mps_Generate(vItemNo:String);
Procedure Run_Mps;
end;
var
as_Mps_GenerateForm: Tas_Mps_GenerateForm;
……………………………………………………………………………………………………
Procedure Tas_MpsRun.Execute;
begin
FreeOnTerminate:=True;
as_Mps_GenerateForm.Run_Mps;//窗体的一个子程序(这里这样设置有无问题?)
end;
Procedure Tas_Mps_GenerateForm.Run_Mps;
begin
for i:=0 to dxTreeList2.Count-1do
begin
vItemNo:=trim(dxTreeList2.Items.Values[0]);
Mps_Generate(vItemNo);
//另一个过程
end;
end;
procedure Tas_Mps_GenerateForm.Mps_Generate(vItemNo:String);
begin
//又一段操作数据库的代码,而且是个大循环。
end;
说明:我的程序能够执行,不出问题,但是我对线程了解得不多,总感觉线程运用有点问题,寻求不到好的方法。欢迎大家积极参与,发表您的意见和建议。
1 创建线程
type Tas_MpsRun=Class(TThread)
Protected
Procedure Execute;Override;
end;
type
Tas_Mps_GenerateForm = class(TForm)
…………
private
procedure Mps_Generate(vItemNo:String);
Procedure Run_Mps;
end;
var
as_Mps_GenerateForm: Tas_Mps_GenerateForm;
……………………………………………………………………………………………………
Procedure Tas_MpsRun.Execute;
begin
FreeOnTerminate:=True;
as_Mps_GenerateForm.Run_Mps;//窗体的一个子程序(这里这样设置有无问题?)
end;
Procedure Tas_Mps_GenerateForm.Run_Mps;
begin
for i:=0 to dxTreeList2.Count-1do
begin
vItemNo:=trim(dxTreeList2.Items.Values[0]);
Mps_Generate(vItemNo);
//另一个过程
end;
end;
procedure Tas_Mps_GenerateForm.Mps_Generate(vItemNo:String);
begin
//又一段操作数据库的代码,而且是个大循环。
end;
说明:我的程序能够执行,不出问题,但是我对线程了解得不多,总感觉线程运用有点问题,寻求不到好的方法。欢迎大家积极参与,发表您的意见和建议。