type
 getdata=class(TThread)//创建发现内容的线程
 private
 protected
   Procedure Execute;override;
   procedure show;
 public
   a:tlabel;
end;var
 th:getdata;
th:=getkeydata.Create(true);
th.a :=label1 ;
th.Resume ;这里的a在线程结束的时候该如何释放?

解决方案 »

  1.   

    直接th.free  不可以吗?
      

  2.   

    a只是个指针,不用释放。
    a指向的label1由label1的父窗口释放!
      

  3.   

    你这里的a是label1,不用释放
    动态创建就要释放了,用a.free
      

  4.   

    你如果非要释放,你可以写 th.a := nil;
      

  5.   

    考虑一下以下问题 
    label1:=label1.Create();
    th:=getkeydata.Create(true);
     th.a :=label1 ; 
    运行线程后  th.a释放了 
    但 我还想操作 
    label1.caption:='dd' 出错了   咋办?th:=getkeydata.Create(true);
    在线程里 a :=label1.Create();
    在线程运行时  label1:=th.a线程结束了 a.free了 
    线程外的 label1 咋办? 不能用了