我是在界面线程里开一个http的线程
  var
  testThread:=TThread;
  如testThread:=threadTest.create(false);  我想在窗体的OncloseQuery()中强行结束这个线程,我用的是testThread.terminate;,但是有时候点击窗体关闭按钮时,根本不会关闭,因为线程里的循环代码很长,每一次循环都要20秒左右,总不能函数里写满判断terminated的代码吧,
  我想要一个能强行完全关闭线程的代码

解决方案 »

  1.   

    setevent,之后
    WaitForSingleObject(theThreadHandle);
    CloseHandle(theThreadHandle);
      

  2.   

    var
      ExitCode: Cardinal;
    begin
      if GetExitCodeThread(testThread.Handle,ExitCode) then
        TerminateThread(testThread.Handle,ExitCode);
    end;
      

  3.   

    TerminateThread容易造成释放出错,一般不提倡用这个
      

  4.   

    TerminateThread则不能释放资源, 有时候会报错,
    自己做同步处理
      

  5.   

       关不掉窗口。。真是郁闷了。。按上面的强行关闭代码也没用。。
        点关闭窗口的按钮没有用貌似不用vclskin才行,真急死人
      

  6.   

      验证了formClose和formCloseQuqery的代码确实执行了,但是窗口就是没有关闭掉