两个线程类,一个是父线程类,一个是子线程类。
我需要在子线程类中使用父线程类(使用两个独立的线程),所以需要在子类的构造函数中创建父类的对象
var
FatherThread: TFatherThread;
constructor TChildThread.Create_1(Suspended: boolean);
begin
FatherThread := inherited Create(Suspended); ...
end; constructor TChildThread.Create_2(Suspended: boolean);
begin
inherited Create(Suspended);
FatherThread := TFatherThread.Create(Suspended);
...
end; 用Create_1构造函数,父线程没有被执行(Suspended = false)
用Create_2构造函数,父线程类如何释放?
destructor TChildThread.Destroy();
begin
...
//只调用inherited Destroy(),创建的父线程类被释放了吗?
//需要调用FatherThread.Free()吗?
inherited Destroy();
end; 还发现在调试时,调用子类的析构函数,但子类的析构函数并未执行,而是直接调用了父类的析构函数。
我需要在子线程类中使用父线程类(使用两个独立的线程),所以需要在子类的构造函数中创建父类的对象
var
FatherThread: TFatherThread;
constructor TChildThread.Create_1(Suspended: boolean);
begin
FatherThread := inherited Create(Suspended); ...
end; constructor TChildThread.Create_2(Suspended: boolean);
begin
inherited Create(Suspended);
FatherThread := TFatherThread.Create(Suspended);
...
end; 用Create_1构造函数,父线程没有被执行(Suspended = false)
用Create_2构造函数,父线程类如何释放?
destructor TChildThread.Destroy();
begin
...
//只调用inherited Destroy(),创建的父线程类被释放了吗?
//需要调用FatherThread.Free()吗?
inherited Destroy();
end; 还发现在调试时,调用子类的析构函数,但子类的析构函数并未执行,而是直接调用了父类的析构函数。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货