我在free一个线程的时候出现“在异步运行时,操作不能被执行”的错误,请问这是什么原因?

解决方案 »

  1.   

    因为你的线程还没有中止
    ....试试。
        oSMThread.Terminate;
        oSMThread.WaitFor;
        oSMThread.Free;
      

  2.   

    你是否设定 了 FreeOnTerminate := true;
    如果有的话,
    UThread.Suspend;
    UThread.Terminate;
    就可以了;不然的话就按照  hch_45(んこん) ( ) 信誉:121   说的做;
      

  3.   

    顺便说一下:ONTERMINATE这个事件在你调用TERMINATE的方法后,是不会被调用的;
      

  4.   

    hch_45兄的方法试过了,到free的时候会出现地址冲突
      

  5.   

    我现在用的过渡方法就是 FreeOnTerminate := true;
    这样thread.execute里的代码会突然中止吧,我希望正常退出