S
SuperJS
Unregistered / Unconfirmed
GUEST, unregistred user!
原本在程序中有一个比较复杂的一系列操作,并且是定时执行的,
因为运行时间比较长,所以就把关键的部分移植到线程中了,但是现在有一问题!
原本很正常的TAdoQuery,现在却莫明奇妙的出错了!
代码如下:
Type
TTimeSpr=class(TThread)
public
procedure Execute;override;
......
Var
Adoq:TADOQUERY;
......
procedure TTimeSpr.Execute;
begin
FreeOnTerminate:=True;
FreeAndNil(Adoq);
Adoq:=TADOQUERY.Create(nil); //运行到此处出错!提示EOleSysError标记没有引用存储!
Adoq.ConnectionString:=ConStr;
Loader(mFileName);
end;
这到底是为什么啊?谁来救救我啊!
另外如果我的程序根据条件只创建一个线程,但要等到线程运行结束后就自动结束
主程序该怎么作呢!原来没有移植到线程以前可以用:
procedure Main();
begin
self.load();//处理函数
application.Terminate;
end;
现在的话,如果我一创建线程再马上application.Terminate;就会发生异常错误了!
该怎么解决呢!!
procedure Main();
var
mThread:TTimeSpr;
begin
mThread:=TTimeSpr.Create(true);
mThread.Init(para1,para2);
mThread.Resume;
application.Terminate;//这句如果不加注释的话,程序就会死的很难看了!
end;
因为运行时间比较长,所以就把关键的部分移植到线程中了,但是现在有一问题!
原本很正常的TAdoQuery,现在却莫明奇妙的出错了!
代码如下:
Type
TTimeSpr=class(TThread)
public
procedure Execute;override;
......
Var
Adoq:TADOQUERY;
......
procedure TTimeSpr.Execute;
begin
FreeOnTerminate:=True;
FreeAndNil(Adoq);
Adoq:=TADOQUERY.Create(nil); //运行到此处出错!提示EOleSysError标记没有引用存储!
Adoq.ConnectionString:=ConStr;
Loader(mFileName);
end;
这到底是为什么啊?谁来救救我啊!
另外如果我的程序根据条件只创建一个线程,但要等到线程运行结束后就自动结束
主程序该怎么作呢!原来没有移植到线程以前可以用:
procedure Main();
begin
self.load();//处理函数
application.Terminate;
end;
现在的话,如果我一创建线程再马上application.Terminate;就会发生异常错误了!
该怎么解决呢!!
procedure Main();
var
mThread:TTimeSpr;
begin
mThread:=TTimeSpr.Create(true);
mThread.Init(para1,para2);
mThread.Resume;
application.Terminate;//这句如果不加注释的话,程序就会死的很难看了!
end;