一个线程类,一个线程管理类,当创建一个线程时,线程管理类就增加一个引用,现在问题是当线程执行完毕时,怎样让线程管理类删除自己???(100分)

R

richw

Unregistered / Unconfirmed
GUEST, unregistred user!
线程类
TMyThread=Class(TThread)
线程管理类
TThreadManager= Class
fThreadList:TThreadList;
public
Function CreateNewThread //这里创建一个线程并加入到fThreadList列表中
问题是当创建的线程执行完毕后,怎样通知管理类删除它?其中创建的线程的
FreeOnTerminate属性设为False
 
执行完毕以后不释放线程,线程重复使用最好,在管理类释放的时候全部删掉!
 
线程的重复使用可是大有学问.....
 
线程执行完后无需释放,他会自动释放的,当然也可以手动释放。
 
感谢大家的回复
但我现在不想重复使用线程,想马上释放,而且不是自动释放,该怎么办
 
给你参考:
unit Unit2;
interface
uses
Classes;
type
TThreadManager = class;
TMyThread = class(TThread)
private
FThreadManager: TThreadManager;
protected
procedure Execute;
override;
public
constructor Create(CreateSuspended: Boolean;
AThreadManager: TThreadManager);
end;

TThreadManager = class
FThreadList: TThreadList;
public
function CreateNewThread: TMyThread;
procedure RemoveAThread(AThread: TMyThread);
end;

implementation
{ TMyThread }
constructor TMyThread.Create(CreateSuspended: Boolean;
AThreadManager: TThreadManager);
begin
inherited Create(CreateSuspended);
FThreadManager := AThreadManager;
end;

procedure TMyThread.Execute;
begin
//执行线程;
FThreadManager.RemoveAThread(Self);
end;

{ TThreadManager }
function TThreadManager.CreateNewThread: TMyThread;
begin
Result := TMyThread.Create(True, Self);
//将Result加入线程队列;
end;

procedure TThreadManager.RemoveAThread(AThread: TMyThread);
begin
//从线程队列中移去AThread;
end;

end.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
603
import
I
D
回复
0
查看
827
DelphiTeacher的专栏
D
顶部