vc代码如下:CWinThread *thread1;if (thread1){
   closehandle(thread1);
}
请问这段代码怎么翻译成delphi的呢?如果是通过api的方式创建线程,其中有个参数就是句柄,但如果通过Tthread的方式创建线程呢?怎么得到句柄从而可以判断线程是否存在呢?

解决方案 »

  1.   

    win api的话应该是CreateThread(参数略)建立新线程,它的返回值就是句柄,TThread的话TThread.Create(arg: boolean)得到线程实例,它有个属性Handle
      

  2.   

    我定义了一个thread1:tthread,然后用如下语句if thread1.handle<>nil then 判断它是否存在,结果thread1还没有创建,它的handle竟然就有值了,这是怎么回事?
      

  3.   

    初始化?thread1只是定义了还没有创建,那该如何初始化呢?
      

  4.   

    var
     t:tthread;
    begin
      此时t还没有创建,但t.handle已经有值了
      t:=tthread.create();
      

  5.   

    我想通过HANDLE来判断线程是否创建,但如果没创建也有值那这个办法就不行了,有别的办法吗?
      

  6.   

    CWinThread *thread1;if (thread1){
      closehandle(thread1);
    }
    这个也不对,如果thread1是局部变量没初始化也不一定是0
      

  7.   


    type thread1=class(TThread)
      private
      public
        procedure Execute; override;
      end;if thread1=nil then thread1:=thread1.Create(false);