我写的一个线程类,但是在操作数据很多的时候后,关闭程序时会报错误操作句柄的错误,为什么?
这是线程的程序代码:
unit QCThreadSaveDBUt;
interface
uses
Classes;
type
TQCSaveDB = class(TThread)
private
{ Private declarations }
function IsTerminated:Boolean;
protected
procedure Execute; override;
public
constructor Create(CreateSuspended: Boolean);
end;
implementation
uses Forms,QCPubDef,SysUtils,PubFunUt,QCPubFun,ADODB,QCLRDM,QiChuYuELuRuUt;
constructor TQCSaveDB.Create(CreateSuspended: Boolean);
begin
FreeOnTerminate := True;
inherited Create(CreateSuspended);
end;
procedure TQCSaveDB.Execute;
var
i,Index:Integer;
begin
while (not IsTerminated) do
begin
if UpDateList.Count = 0 then
delay(1000)
else
begin
while(UpDateList.Count > 0) and (not IsTerminated) do
begin
Index := StrToIntDef(UpdateList.Strings[0],0);
if OperAccsumNew[Index].bHaveData = 1 then
InsertDB(frmQCLR.ADOQ,Index)
else
UpdateDB(frmQCLR.ADOQ,Index);
OperAccsumNew[Index].bSaveToDB := 0;
OperAccsumNew[Index].bHaveData := 0;
UpdateList.Delete(0);
end;
end;
end;
end;
function TQCSaveDB.IsTerminated: Boolean;
begin
Result := Terminated or Application.Terminated ;
end;
end.
我在调用时
FSaveDB := TQCSaveDB.Create(false);
窗体关闭时
FSaveDB.Terminate;