从TThread继续下来。我在Execute方法里没有使用循环,我想问当执行完execute里的代码后,线程处于什么状态?
suspend?
terminated?
nil?测试了一下这三个都不对而且我在create里执行了freeOnTerimated,结果也没变化?注意:没有去调用teminate方法

解决方案 »

  1.   

    freeOnTerimated 在構造時為TRUE,執行完線程就釋放,不然就掛起
      

  2.   


    //线程应该是被释放了
    function ThreadProc(Thread: TThread): Integer;
    var
      FreeThread: Boolean;
    begin
      try
        if not Thread.Terminated then
        try
          Thread.Execute;
        except
          Thread.FFatalException := AcquireExceptionObject;
        end;
      finally
        FreeThread := Thread.FFreeOnTerminate;
        Result := Thread.FReturnValue;
        Thread.DoTerminate;//执行完毕execute后通过同步的方法来调用OnTerminate
        Thread.FFinished := True;
        SignalSyncEvent;
        if FreeThread then Thread.Free;//执行完毕execute后,看FreeOnTerminate,如果为T,则释放Thread
        EndThread(Result);
      end;
    end;