Close方法与TThread的疑问(100分)

  • 主题发起人 主题发起人 lih544
  • 开始时间 开始时间
L

lih544

Unregistered / Unconfirmed
GUEST, unregistred user!
请看:
//定义
TPopupHintFormThread = class;
TPopupHintForm = class(TForm)
private
FTHread: TPopupHintFormThread;

public
proceduredo
Animate;
property THread: TPopupHintFormThread read FTHread write SetTHread;
end;

TPopupHintFormThread = class( TThread )
private
FPopupHintForm: TPopupHintForm;

public
constructor TPopupHintFormThread.Create;
procedure Execute;
override;
end;

//实现
procedure TPopupHintForm.DoAnimate;
begin
Close;
//这里为什么先Close再终结父线程。
//不是close后FTHread所指窗体的内存空间没有了吗?
THread.Terminate;
//这句为什么还可以执行
end;

constructor TPopupHintFormThread.Create;
begin
FPopupHintForm := TPopupHintForm.Create( NIL );
//令这里是否又创建了一个线程
FPopupHintForm.THread := Self;
FPopupHintForm.Show;
Inherited Create( CreateSuspended );
end;

procedure TPopupHintFormThread.Execute;
begin
while not Terminateddo
FPopupHintForm.DoAnimate;
end;
 
procedure TPopupHintForm.DoAnimate;
begin
Close;
//这里为什么先Close再终结父线程。
//不是close后FTHread所指窗体的内存空间没有了吗?
THread.Terminate;
//这句为什么还可以执行
end;
窗体的Close默认仅仅是相当于Hide,除非它是主窗体
 
我以前只看帮助文件,你点醒了我去看原代码。
我本来应该给你100的,但我没分了!不好意思!实在对不起。
 
接受答案了.
 

Similar threads

后退
顶部