简单的问题:在 Thread 中所Create的Tdatamodule是否会真正的释放!(100分)

  • 主题发起人 主题发起人 evon
  • 开始时间 开始时间
E

evon

Unregistered / Unconfirmed
GUEST, unregistred user!
在 Thread 中所Create的Tdatamodule是否会真正的释放!
procedure Thread.Execute;
var
ThDM:TRDM;{Tdatamodule}
begin
try
ThDM:=TRDM.Create(Application);
......
finally
ThDM:=nil;
ThDM.Free;
end;
却发现执行ThDM.Free并不会触发 TRDM.Destory事件
是不是代表(该Thread的TDatamodule)还没释放出来
待整个程式结束後才会触发。
 
>> finally
>> ThDM:=nil;
-----> ThDM = nil now
>> ThDM.Free;
------> = nil.Free 不出错? 我觉得很奇怪.
>> end;
顺序反了.
finally
ThDM.Free;
ThDM := nil;
 
Another_eYes说的对!
可以看VCL的源代码,

free对象方法的内容就是:
if 对象的引用<>nil
then
对象的引用.Destory
 
逻辑性错误
我也经常犯
程序编多了就好了
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部