TMyThread = class(TThread)
private
MyList : TStrings;
public
constructor Create(CreateSuspended: Boolean;List: TStrings);overlaod;
procedure Execute; override;
procedure Terminate;overload;
end;constructor TRecvThread.Create(CreateSuspended: Boolean;List: TStrings);
begin
MyList := List;
inherited Create(CreateSuspended);
end;procedure TRecvThread.Execute;
begin
{ Place thread code here }
while MyList.Count > 0 do
begin
//do something;
MyList.Delete(0);
end;
end;procedure TRecvThread.Terminate;
begin
MyList.Clear;
MyList.Destroy;
inherited;
end;在其它地方调用
List := TStrings.Create;
MyThread := TMyThread.Create(true,List);
List.Add('Hello!');为什么在执行
List.Add('Hello!');
后会编译器报EAbstractError错误。我的本意是发送消息给线程处理,又没有什么解决这个问题。
private
MyList : TStrings;
public
constructor Create(CreateSuspended: Boolean;List: TStrings);overlaod;
procedure Execute; override;
procedure Terminate;overload;
end;constructor TRecvThread.Create(CreateSuspended: Boolean;List: TStrings);
begin
MyList := List;
inherited Create(CreateSuspended);
end;procedure TRecvThread.Execute;
begin
{ Place thread code here }
while MyList.Count > 0 do
begin
//do something;
MyList.Delete(0);
end;
end;procedure TRecvThread.Terminate;
begin
MyList.Clear;
MyList.Destroy;
inherited;
end;在其它地方调用
List := TStrings.Create;
MyThread := TMyThread.Create(true,List);
List.Add('Hello!');为什么在执行
List.Add('Hello!');
后会编译器报EAbstractError错误。我的本意是发送消息给线程处理,又没有什么解决这个问题。
改为MyList : TStringList;
无论是delphi,C++,JAVA都一样
改为MyList : TStringList;
==============================
不必。
只要List := TStringList.Create;就好了。