提示Abstract Error错误。。。 ( 积分: 50 )

  • 主题发起人 主题发起人 javesun
  • 开始时间 开始时间
J

javesun

Unregistered / Unconfirmed
GUEST, unregistred user!
小弟想在线程中创建子线程,但是在编译时提示“Abstrac Error”。程序如下。
type
TCThread= Class(TThread)
private
FTabStr: String;
FStatus: String;
protected
procedure Execute;
override;
public
Constructor Create;
end;

type
TMThread= Class(TThread)
private
FNRCThread: Array of TCThread;
protected
procedure Execute;
override;
public
Constructor Create;
procedure Suspend;
end;

implementation
{ TCThread }
constructor TCThread.Create;
begin
inherited Create(True);
----->出错句
FreeOnTerminate:= True;
end;

procedure TCThread.Execute;
begin
inherited;
while not Terminateddo
begin
//
end;
end;

{ TMThread }
constructor TMThread.Create;
var
i: Integer;
begin
inherited Create(False);
FreeOnTerminate:= True;
SetLength(FNRCThread, 3);
for i:= Low(FNRCThread) to High(FNRCThread)do
FNRCThread:= TCThread.Create;
end;

procedure TMThread.Execute;
begin
inherited;
while not Terminateddo
begin
//
end;
end;

procedure TMThread.Suspend;
begin
//
end;

MThread创建时,在创建子线程的时候提示错误“Abstract Error”。
 
public中Create声明部分应该更改为:
constructor Create(Suspended: Boolean);reintroduce;
 
to lawler:
inherited Create(False);这部分怎么改写?
 
constructor TCThread.Create(Suspended: Boolean);
begin
inherited Create(Suspended);

FreeOnTerminate:= True;
end;

procedure TCThread.Execute;
begin
inherited;
while not Terminateddo
begin
//
end;
end;
 
to lawler:还是报同样的错误。
是不是在线程中不能创建子线程呢?
 
我这里只有Delphi2006,没有Delphi3
2006下编译完全正常,看来我帮不了你了,抱歉
 
我这儿是D5,想问一下,能否在线程中创建线程?
上面的代码你在D2006测试过是吧。那就应该是可以的。
 
public
Constructor Create;virtual;
试试
 
问题解决!在Execute里多了inherited
可以肯定在子线程中再创建子线程没有问题。
感谢lawler。
 

Similar threads

后退
顶部