如何停止一个线程运行呢?很急!我调用线程是sjcl.Create(false);,如何停止呢?谢谢!

解决方案 »

  1.   

    inst := sjcl.Create(false)if sjcl is TThreadClass then
    //>>如果没有调用 inst.resume,只是这样创建了线程对象,那你的线程都没有启动
    线程启动可以用 inst.terminate;
      

  2.   

    线程终止可以用 inst.terminate;
      

  3.   

    什么乱七八糟,能详细一点吗?我调用线程是sjcl.Create(false);,如何停止呢?谢谢!
      

  4.   

    sjcl.Suspend   //这个是暂停线程的运行,此时线程运行在哪一句,就暂停在哪一句sjcl.terminate   //这个是销毁线程,执行后,此线程就不存在了
      

  5.   

    sjcl.terminate   ,但运行通不过啊!
      

  6.   

    sjcl.terminate可销毁线程,但不安全。
    sjcl是delphi的线程类的话,也可sjcl.free,这样会稍安全。
    但还是要考虑到free前资源的释放的时差问题。
      

  7.   

    我的DELPHI怎么这样写都通过不了啊!
    只有sjcl.Create(false);
      

  8.   

    不是拽啊,我是才学的,不知道所以急,又要急用,是不是缺少基本单位啊!sjcl.terminate   运行不了!
      

  9.   

    sjcl.Create(false)  sjcl应该是一个 TThread类吧(习惯上类都会使用T前缀 如TMyThread)终止运行是用terminate方法但是terminate实际上是改了一个终止标志,即设置terminated为True,线程不一定立即停止运行了所以通常在 线程的执行体 即execute方法中会增加 if not terminated then 判断, 这样的话,一旦调用teminate方法,就能最快的停止运行, 同时可能需要考虑数据丢失的问题(因为中断,未执行一些代码),可以在onTerminate中补充做些事情最终 线程做什么,怎么做 还是很自由的 看你的需求啦,以上只是习惯上的做法另外,对Win32的线程理解 你可以去学学用API做 因为VCL的TThread只是一个包装类 一件外衣,它的核心是一个叫ThreadProc的 Procdure(其中自然 是用Win32的API了)ps: inst := sjcl.Create(false) 线程已经内调了 resume, 之前我说错了